大话设计模式-模板方法模式

25 阅读1分钟

题目:用代码一个老师在黑板上出3道题,学生在纸上答题的场景。

分析: 一个试卷类,包含三道题,3个作答方法交给子类实现,一个作答类,包含每道题作答方法的具体实现。

代码实现: 试题类: image.png

A同学作答类:

image.png

B同学作答类:

image.png

定义:抽象一个操作中的算法骨架(流程步骤),将算法中的一些步骤延迟到子类中,使得子类可以不改变算法结构即可定义该算法的某些特定步骤。

结构图: image.png

适用场景: 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复。

缺点:类数目增加。继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。