模板方法属于类行为型模式,通常定义出一个稳定的骨架,特定的内容的实现延迟至子类中去实现。

在模板方法的实现思想:将稳定的部分实现,把容易变化的部分开放给实际使用者实现。

模板方法的常见例子:继承,虚函数等。

例如在JAVA像利用线程实现下载功能,你只需要定义一个线程实现run方法就行。对于Library开发者不需要去实现不同功能的线程,把线程的功能实现留给实际应用的开发者。Library开发者只需要实现线程的系统调度等稳定的操作就可以,这就是“实现稳定,开放变化”。当然对于应用开发者,就要自行去实现“变化的部分”,功能稳定部分的实现逻辑对于应用开发者是一个“黑匣子”。对于JAVA线程使用来说,开发者只需要知道在run方法写入下载功能就能够同时达到“并发,共享进程资源”的特点。

例如在一个计算图形的面积的应用程序中已有矩形和三角形的面积计算功能,现有一个“增加圆形计算面积的功能”的需求。

一种实现方式是“每个图形都定义一个独立的类”,第二种是‘定义一个图形抽象类,让各个图形继承该抽象类。“

---------- 实现方式1-------------
class rectangular{....double area(){.....}
}
class triangle{....double area(){.....}
}int main(){if(type == "rectangular"){rectangular  r1;...r1.area() ; }else if(type =='triangle'){triangle  t1;...t1.area();}return 0 ;
}---------- 实现方式2-------------
class shape{...double area()=0;
}
class rectangular:public shape{...double area(){.....}
}
class triangle:public shape{...double area(){.....}
}int main(){rectangular  r1;...r1.area() ; return 0 ;
}

显然,前一种方式面对这个需求新增,不仅需要创建一个类实体,而且实现流程还需要根据具体类型来变更main方法中的流程。而在第二中方式中,Library 开发人员负责实现 shape 类的定义和main方法的实现,实际应用开发人员只需要创建一个继承shape 的类就可以完成这个需求。

模板方法主要关注的就是“变化”和“稳定”。把两者中划分出来,将变化的部分抽离开,是这模板方法思想的关键。

当然,如果功能骨架中的每一步都是变化的,或者从头到尾都是稳定的,那就不要用模板方法了。

设计模式理解:模板方法相关推荐

  1. php templete什么意思,PHP设计模式之模板方法模式定义与用法详解

    本文实例讲述了PHP设计模式之模板方法模式定义与用法.分享给大家供大家参考,具体如下: 什么是模板方法模式 模板方法(Template Method)设计模式中使用了一个类方法templateMeth ...

  2. 细说Python设计模式之模板方法模式(封装算法)

    文章目录 定义模板方法模式 适用场景 日常例子理解该模式 了解模板方法设计模式 模板方法模式的UML类图 现实中的模板方法模式 模板方法模式--钩子 好莱坞原则与模板方法 模板方法的优缺点 问答 定义 ...

  3. C++设计模式之模板方法模式

    模板方法模式 设计模式的定义 模板方法模式详解 背景----柠檬茶和咖啡的的冲泡方式 代码实现咖啡和茶冲泡的类 整理相似点 进一步设计 总结一下 认识模板方法 测试一下 模板方法模式的优点 模板方法的 ...

  4. 设计模式理解(二)创建型——单例、原型

    设计模式理解(二)单例(Singleton)与原型(Prototype) 为什么一起写,因为懒.... 单例,就是用了面向对象语言的一些奇技淫巧,把构造函数私有了,然后用一个自身类型的静态指针作为全局 ...

  5. 一篇博客读懂设计模式之---模板方法模式

    设计模式之模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 简而言之就是:父类定义了骨架(调用哪些方法及其 ...

  6. 23种设计模式之模板方法

    23种设计模式总篇:chenmingyu.top/design/ 模板方法 模板方法属于行为型模式 定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重定 ...

  7. 设计模式之模板方法模式详解

    设计模式之模板方法模式详解 概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的 ...

  8. Java设计模式之模板方法模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  9. 【设计模式】模板方法模式(C#)

    [设计模式]模板方法模式 1.概述 背景 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某 ...

  10. 设计模式之模板方法模式(TemplateMethod)

    设计模式之模板方法模式 模板方法模式 代码实现 模式的应用 模板方法模式 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现 ...

最新文章

  1. Debian上网的问题小结
  2. 高精度垃圾分类模型开发与硬件集成
  3. java foreach 原理_一不小心就让Java开发者踩坑的failfast是个什么鬼?
  4. CALayer的基本操作
  5. 微软亚洲研究院等提出CNN训练新方法RePr,准确率显著提升
  6. 微服务实践(五):微服务的事件驱动数据管理
  7. 深入浅出 JavaScript 中的 this
  8. 《Python编程从入门到实践》记录之将Python函数存储在模块中(import、import*)
  9. 初识linux 命令(一)
  10. 服务器运维硬件,服务器硬件运维巡检报告模板
  11. 使用crontab定时备份mysql
  12. LeetCode每日一题——剑指 Offer 10- I. 斐波那契数列
  13. 项目实训--Unity多人游戏开发(八、3D音效融合AudioMixer、统一的音频播放系统)
  14. volatile有序性的真正作用
  15. Sql Server 2008 配置服务器,并让客户端连接
  16. 一篇文章通俗易懂的让你彻底理解 Java 注解
  17. Dreamweaver CS6安装及破解步骤
  18. wince版千千静听出炉
  19. PyQt5入门(三)
  20. C#程序无法连接本地数据库

热门文章

  1. Centos7.0-安装docker
  2. bzoj1202[HNOI2005]狡猾的商人
  3. UITextField详解
  4. 404 – File or directory not found.
  5. 数据挖掘实践(金融风控)
  6. k8s集群RBAC安全机制:role rolebing user
  7. linux shell if判断字符串是否包含某字符串
  8. Django 3.2.5博客开发教程:使用富文本编辑器添加数据
  9. idea实用技巧完全教程
  10. golang设置运行CPU数量及sync.Mutex全局互斥锁的使用示例