2.设计模式--模板方法模式(TemplateMethod模式)
发布于 2021-09-08 04:26
模板方法模式,听名字就知道这个肯定和模板有关系,有这样一个逻辑,厨师炒菜,炒菜都是先打火,然后放油、放盐、翻炒、起锅、关火无论是我们炒土豆还是青菜,实际上都是按照这个模板来,步骤都是那么几步,都是按照顺序来的。
TemplateMethod就是炒菜的模板,定义了抽象方法。其中具体的实现是交给子类去做的。TemplateMethod负责模板,就像炒菜模板只给了步骤,具体放多少油、放多少菜、翻炒多少下应该是子类去决定。cooking方法定义了模板的执行顺序,同时由于点火和起锅在炒菜这个例子中是都需要的,所以可以直接在模板中进行实现。
Potato表示土豆丝的做法,其中定义了具体放多少调料和多少油以及具体的翻炒次数。
Vegetables表示蔬菜的做法,其中定义了具体放多少调料和多少油以及具体的翻炒次数
在AQS中就使用了模板方法。其中tryAcquire方法是需要在子类中进行具体实现的,而acquire则定义了执行的顺序。
模板方法模式的优缺点如下
优点:
1.可以提取公共的代码(点火、起锅)这种公共的都是通过父类来定义而子类只需要继承。
2.同时扩展性强,需要整个更改流程的时候只需要更改模板,同时父类只需要定义顺序,子类来实现具体的内容。
缺点:
1.子类在做继承的时候必须要注意父类的具体顺序
2.如果模板中需要插入新的步骤,此时所有子类都需要进行实现(即使某些子类并不需要)
参考文献:《图解设计模式》
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材