什么是模板方法?
引用别人博客的答案:在解决这个问题前,咱们先来看看模板。提到模板,相信大家马上能够想到一些东西,如ppt的模板,报表导出的excel模板,简历的模板等等,呵呵,使用它们的好处当然是显而易见的:它们可以给我们提供特定的结构和样式,我们就只需关心填充数据内容。
模板方法模式的实现要素?
准备一个抽象类,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法交由子类实现剩余逻辑,用钩子方法实现剩余逻辑,用钩子方法给予子类更大的灵活。最后将方法汇总构成一个不可更改的方法。
适用的场景?
算法或操作遵循相似的逻辑
重构时(把相同抽取到父类中)
重要、复杂的算法,核心算法设计为模板算法
模板方法模式的优点?
封装性好,复用性好(减少开发时间),屏蔽细节,便于维护
模板方法模式的缺点?
继承(java是单继承的语言,要做重构,就比较麻烦)
模板方法下有抽象基类、子类:
抽象基类中:
基本方法:
抽象方法:(不知道如何实现)
可选的钩子:(不知道需不需要实现,交给子类决定)
Template方法:(要定义final【不能改变整体结构】,整个步骤)好莱坞原则。
子类中:
实现基类中的抽象方法:
覆盖钩子方法: