题目:用代码一个老师在黑板上出3道题,学生在纸上答题的场景。
分析: 一个试卷类,包含三道题,3个作答方法交给子类实现,一个作答类,包含每道题作答方法的具体实现。
代码实现:
试题类:
A同学作答类:
B同学作答类:
定义:抽象一个操作中的算法骨架(流程步骤),将算法中的一些步骤延迟到子类中,使得子类可以不改变算法结构即可定义该算法的某些特定步骤。
结构图:
适用场景: 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复。
缺点:类数目增加。继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。