设计模式学习-模板方法模式

定义:模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
模板方法是设计模式中较好理解的一种,他的使用场景是:当有一个业务有N个步骤(模板),其中一部分步骤是永恒不变的,那么就将不变的这些步骤抽象到父类中,可能变化的步骤留给子类去实现。

egg:一个很好的例子就是做饭:
我们做法的步骤一般就是:1.打开抽油烟机
2.生火
3.西红柿炒蛋
4.关火
5.关闭抽油烟机
但是1,2,4,5 是固定不变的,而只有 3 步骤可能炒的东西不一样,所以就可以让子类去具体实现步骤3 ,而父类实现1,2,4,5 并且执行顺序 要final ,子类不可更改。

类图.jpg

模板中的钩子
在模板方法中我们可以提前预埋多个钩子,让子类有一定的能力影响抽象类中的算法流程 ,为了方便还可以在父类中设置开关,方便子类对钩子的控制。
其实 :可以让子类实现前置和后置操作就是模板方法模式的应用

总结:模板方法模式是将子类中不变的部分抽象到父类,可变的部分由子类去实现。
优点:封装不变公共代码,便于维护。可变部分的代码由子类自由决定,扩展性强
缺点:每新增一个不同的实现都需要增加一个子类,可能导致类数量变多,增加系统复杂性

你可能感兴趣的:(设计模式学习-模板方法模式)