首页 > 代码库 > 模板方法模式-TemplateMethod

模板方法模式-TemplateMethod

模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的机构即可以重定义算法的某些特定步骤。

  模板方法模式是通过吧不变形为搬移到超类,去除子类中的重复代码来体现它的优势。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

模板方法模式结构图:

技术分享

代码实现:

技术分享

技术分享

技术分享

技术分享

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

  抽象超类:基本方法,抽象方法,钩子方法(按需),模板方法(final)

  具体子类:实现超类中的抽象方法,覆盖钩子方法(按需)

模板方法模式的适用场景:

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

  重构时(把相同的代码抽取到超类中)

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

模板方法模式的优缺点:

  优点:

    封装性好

    复用性好

    屏蔽细节

    便于维护

  缺点:

    继承(单继承,难以继承其他可能需要集成的类)

模板方法模式-TemplateMethod