模板模式(Template Pattern)
一、概念
模板模式(Template Pattern)也叫模板方法模式,指在抽象类中将业务逻辑划分为多个方法,通过模板方法中调用这些方法后,组成完整的业务处理流程。子类只需重写相关方法实现,即可实现同一流程的不同处理方式
- 核心思想:定义一个抽象模板类,提供子类实现。
- 模式动机:许多业务有着相同的执行步骤,这些步骤中有许多是相同的代码实现,部分步骤是不同代码的实现。此时就可以在抽象类中定义所有的步骤,提供程序的方法主入口。由抽象类来实现通用的步骤方法,抽象类无法实现的具体步骤交给子类来实现。
二、适用场景
有多个子类共有的方法,且逻辑相同
。- 用于
流程相同、相似的业务处理
,可重写模板方法提供不同的处理方式
三、参与者
- 抽象模板角色(Abstract Template):抽象模板类,定义了一个用于控制执行流程的具体模板方法、公共实现方法 以及 一些子类必须实现的抽象方法`。
- 具体模板角色(Concrete Template):实现抽象模板类中的抽象方法,子类可以编写自己独有的实现逻辑,但是执行流程受抽象模板类控制。
- Client 用户
四、代码例子
做卷子时通常要经过以下几个步骤:
- 写名字和班级
- 答卷
- 交卷
不论是做语文卷还是英语卷都要经过这几步,但答卷时所完成的内容不同
- 抽象模板角色(Abstract Template):ExamationPaper
- 具体模板角色(Concrete Template):EnglishExamationPaper、ChineseExamationPaper
五、UML图
六、优缺点
(一)优点
- 封装不变部分,扩展可变部分,提高代码的复用性。
- 提取公共代码,便于维护。
- 行为由父类控制,子类实现。
(二)缺点
- 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
- 继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。