
【设计模式之禅】模板方法模式
封装不变的部分:将算法中的不变部分(如算法的大框架)封装到模板方法中,避免重复代码。 增加可扩展性:允许子类在不修改父类结构的情况下,扩展算法的部分功能。 遵循迪米特法则:子类仅关注与自身相关的业务逻辑,减少了对父类的依赖。
发布日期:2021-05-10 05:48:25
浏览次数:26
分类:精选文章
本文共 1427 字,大约阅读时间需要 4 分钟。
模板方法模式
模板方法模式(Template Method Pattern)是一种软件设计模式,用于定义算法的框架,将算法的不变部分提取到父类中,而可变部分则留给子类去实现。通过模板方法,子类可以在不修改父类结构的情况下,重定义算法的一部分。
模板方法模式的核心思想是:抽象模板类中定义一个操作的框架,框架中包含了一些被调用但需要子类实现的基本方法。模板方法则是调用这些基本方法,完成算法的具体逻辑实现。模板方法通常被标记为final,以防止它被子类重写,从而确保模板方法的逻辑不变。
在Java中,模板方法模式通常通过继承抽象模板类来实现。抽象模板类决定了算法的总体结构,而具体的实现则由其子类完成。以下是模板方法模式的示例代码:
public abstract class AbstractClass { protected abstract void doSomething(); protected abstract void doAnything(); public final void templateMethod() { // 算法的核心逻辑 this.doSomething(); this.doAnything(); }}public class ConcreteClass1 extends AbstractClass { @Override protected void doSomething() { // 具体实现 } @Override protected void doAnything() { // 具体实现 }}public class ConcreteClass2 extends AbstractClass { @Override protected void doSomething() { // 具体实现 } @Override protected void doAnything() { // 具体实现 }}public static void main(String[] args) { AbstractClass class1 = new ConcreteClass1(); AbstractClass class2 = new ConcreteClass2(); class1.templateMethod(); class2.templateMethod();}
模板方法模式的主要优点包括:
模板方法模式的适用场景包括:
- 在多个子类共享相同的基本算法结构,但每个子类可能会有不同的实现细节。
- 对于需要重构的代码,提取算法的通用部分成为模板方法,其他部分由子类自定义。
- 适用于需要通过某些条件来选择执行不同的算法实现的情况。
模板方法模式在实际开发中的应用非常广泛,常用于需要继承和多态性的场景,特别是在需要灵活扩展算法行为但保持算法整体结构不变的应用中。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月27日 10时36分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python模块学习--uuid
2019-03-14
kafka+storm+hbase整合试验(Wordcount)
2019-03-14
VMware克隆虚拟机后重启network失败
2019-03-14
Hbase压力测试
2019-03-14
在IDEA中用jdbc技术通过配置文件连接mysql数据库连接池
2019-03-14
StreamReader & StreamWriter
2019-03-14
C#中的类、方法和属性
2019-03-14
Python爬取清朝末年医书:《醉花窗医案》,看看病症情况
2019-03-14
Python爬虫训练:爬取酷燃网视频数据
2019-03-14
Python数据分析入门(十九):绘制散点图
2019-03-14
大佬谈接口自动化,我是这样做测试框架开发的……
2019-03-14
C++版浙大PAT乙级1069(20分)测试点3答案错误解决方法
2019-03-14
hive内部错误
2019-03-14
Error:scalac: bad option: '-make:transitive'
2019-03-14
微软xp壁纸rgb
2019-03-14
浏览器刷新页面
2019-03-14
代码错误信息,微信报错
2019-03-14
easyui日期处理(开始时间和结束时间)
2019-03-14