模板模式(Template Pattern)
一、概念
模板模式(Template Pattern)也叫模板方法模式,指在抽象类中将业务逻辑划分为多个方法,通过模板方法中调用这些方法后,组成完整的业务处理流程。子类只需重写相关方法实现,即可实现同一流程的不同处理方式
- 核心思想:定义一个抽象模板类,提供子类实现。
- 模式动机:许多业务有着相同的执行步骤,这些步骤中有许多是相同的代码实现,部分步骤是不同代码的实现。此时就可以在抽象类中定义所有的步骤,提供程序的方法主入口。由抽象类来实现通用的步骤方法,抽象类无法实现的具体步骤交给子类来实现。
二、适用场景
有多个子类共有的方法,且逻辑相同
。- 用于
流程相同、相似的业务处理
,可重写模板方法提供不同的处理方式
三、参与者
- 抽象模板角色(Abstract Template):抽象模板类,定义了一个用于控制执行流程的具体模板方法、公共实现方法 以及 一些子类必须实现的抽象方法`。
- 具体模板角色(Concrete Template):实现抽象模板类中的抽象方法,子类可以编写自己独有的实现逻辑,但是执行流程受抽象模板类控制。
- Client 用户
四、代码例子
做卷子时通常要经过以下几个步骤:
- 写名字和班级
- 答卷
- 交卷
不论是做语文卷还是英语卷都要经过这几步,但答卷时所完成的内容不同
- 抽象模板角色(Abstract Template):ExamationPaper
- 具体模板角色(Concrete Template):EnglishExamationPaper、ChineseExamationPaper
五、UML图
六、优缺点
(一)优点
- 封装不变部分,扩展可变部分,提高代码的复用性。
- 提取公共代码,便于维护。
- 行为由父类控制,子类实现。
(二)缺点
- 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
- 继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了