23种设计模式之模板设计模式

2025-09-28 06:39:44

1、模板模式主要是由抽象模板(Abstarct Template)角色和具体的模板(Concrete Template)角色组成。

1.抽象模板(Abstract Template): 定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤;定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法。

2.具体模板(Concrete Template): 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤;每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。

2、以下将以不同事务放入冰箱为例

冰箱类

23种设计模式之模板设计模式

3、大象具体实现类

23种设计模式之模板设计模式

4、猪具体实现类

23种设计模式之模板设计模式

5、测试类

23种设计模式之模板设计模式

6、执行结果为

23种设计模式之模板设计模式

1、在模板方法模式的父类中,我们可以定义一个方法,它默认不做任何事情,子类可以视情况要不要覆盖,该方法称为"钩子"。

2、上述案例把猪和大象放入了冰箱,此时,我需要看一下它们的状况,并且不关冰箱门,步骤将忽略第二步和第三步

冰箱抽象类

23种设计模式之模板设计模式

3、具体的实现子类

23种设计模式之模板设计模式

4、具体的实现子类

23种设计模式之模板设计模式

5、具体的实现子类

23种设计模式之模板设计模式

6、测试类

23种设计模式之模板设计模式

7、执行结果

23种设计模式之模板设计模式

1、优点

1.扩展性好,对不变的代码进行封装,对可变的进行扩展;

2.可维护性好,因为将公共代码进行了提取,使用的时候直接调用即可。

2、缺点

每一个不同的实现都需要一个子类来实现,导致类的个数增加,会使系统变得复杂。

3、使用场景

1.有多个子类共有逻辑相同的方法;

2.重要的、复杂的方法,可以考虑作为模板方法。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢