什么是模板方法?

 引用别人博客的答案:在解决这个问题前,咱们先来看看模板。提到模板,相信大家马上能够想到一些东西,如ppt的模板,报表导出的excel模板,简历的模板等等,呵呵,使用它们的好处当然是显而易见的:它们可以给我们提供特定的结构和样式,我们就只需关心填充数据内容。

 

模板方法模式的实现要素?

准备一个抽象类,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法交由子类实现剩余逻辑,用钩子方法实现剩余逻辑,用钩子方法给予子类更大的灵活。最后将方法汇总构成一个不可更改的方法。

 

适用的场景?

算法或操作遵循相似的逻辑

重构时(把相同抽取到父类中)

重要、复杂的算法,核心算法设计为模板算法

 

模板方法模式的优点?

封装性好,复用性好(减少开发时间),屏蔽细节,便于维护

 

模板方法模式的缺点?

继承(java是单继承的语言,要做重构,就比较麻烦)

 

模板方法下有抽象基类、子类:

 

抽象基类中:

基本方法:

抽象方法:(不知道如何实现)

可选的钩子:(不知道需不需要实现,交给子类决定)

Template方法:(要定义final【不能改变整体结构】,整个步骤)好莱坞原则。

 

子类中:

实现基类中的抽象方法:

覆盖钩子方法: