23种设计模式之模板设计模式
1、模板模式主要是由抽象模板(Abstarct Template)角色和具体的模板(Concrete Template)角色组成。
1.抽象模板(Abstract Template): 定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤;定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法。
2.具体模板(Concrete Template): 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤;每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。
2、以下将以不同事务放入冰箱为例
冰箱类
3、大象具体实现类
4、猪具体实现类
5、测试类
6、执行结果为
1、在模板方法模式的父类中,我们可以定义一个方法,它默认不做任何事情,子类可以视情况要不要覆盖,该方法称为"钩子"。
2、上述案例把猪和大象放入了冰箱,此时,我需要看一下它们的状况,并且不关冰箱门,步骤将忽略第二步和第三步
冰箱抽象类
3、具体的实现子类
4、具体的实现子类
5、具体的实现子类
6、测试类
7、执行结果
1、优点
1.扩展性好,对不变的代码进行封装,对可变的进行扩展;
2.可维护性好,因为将公共代码进行了提取,使用的时候直接调用即可。
2、缺点
每一个不同的实现都需要一个子类来实现,导致类的个数增加,会使系统变得复杂。
3、使用场景
1.有多个子类共有逻辑相同的方法;
2.重要的、复杂的方法,可以考虑作为模板方法。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。