1、概述
模板设计模式定义:定义一个操作中的算法骨架,将步骤延迟到子类中。
模板设计模式是一种行为设计模式,一般是准备一个抽象类,将部分逻辑以具体方法或者具体的构造函数实现,然后声明一些抽象方法,这样可以强制子类实现剩余的逻辑。不同的子类以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板设计模式能达成的功能。
适用于一些复杂操作进行步骤分割、抽取公共部分由抽象父类实现、将不同的部分在父类中定义抽象实现、而将具体实现过程由子类完成。对于整体步骤很固定,但是某些部分易变,可以将易变的部分抽取出来,供子类实现。
角色:
抽象类:实现模板方法、定义算法骨架
具体类:实现抽象类中的抽象方法,完成特定的算法
2、代码示例
我们举一个比较常见的例子:将一个物品装进冰箱。为了达到这个目的我们一般有如下几步:
a:打开冰箱门
b:将物品装进冰箱
c:关上冰箱门
上面的这三步其实就是“将一个物品装进冰箱”这个算法的骨架。在这个算法中,物品这个字眼很重要,它是抽象的,而不是具体的,对于每个不同的物品,装入的时候行为可能不同,这一点非常重要。比如:
a:将一块猪肉放进冰箱--->一块猪肉这么小,直接放进去
b:将一头大象放进冰箱--->一头大象这么大,切碎放进去
上面只是不恰当的举个例子,只是为了说明:针对与不同物品,放入冰箱的动作(行为)不同。
特别注意:上面物品虽是抽象的,但是我最终想表达的