1 前言

模板方法模式是面向对象软件设计中一种非常简单的设计模式。其基本思想是在抽象类的一个方法定义“标准”算法。在这个方法中调用的基本操作由子类重载予以实现。这个方法成为“模板”。因为方法定义的算法缺少一些特有的操作。

2 详述

2.1 简述

定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构。思维导图如下:

2.2 何时使用

(1)需要一次性实现算法的不变部分,并将可变得行为留给子类来实现。

(2)子类的共同行为应该被提取出来放到公共类中,以避免代码重复。现有代码的差别应该被分离为新的操作。然后用一个调用这些新操作的模板方法来替换这些不同的代码。

(3)需要控制子类的扩展。可以定义一个在特定点调用“钩子”(hook)操作的模板方法。子类可以通过钩子操作的实现在这些点扩展功能。

2.3 模板方法调用5种类型的操作

(1)对具体类或客户端类的具体操作;

(2)对抽象类的具体操作;

(3)抽象操作;

(4)工厂方法;

(5)钩子操作。

版权声明:欢迎转载,请注明出处:蜗牛爱课 • 移动互联网

最新文章

  1. Android深度探索HAL与驱动开发 第三章 Git入门
  2. JavaScript 语句 while
  3. 页面table的每行都有一个<input type='button' />,如何实现点击按钮在按钮下方弹出一个div,点击空白消失
  4. java -version
  5. 【MongoDB】开启认证权限
  6. SQL server 2012序列号 注册码 z
  7. 多线程归并排序(摘自githhub)
  8. VisionPro笔记:色彩区分
  9. 自制操作系统Antz(4)——进入保护模式 (下) 实现内核并从硬盘载入
  10. 【模板】Splay
  11. [Visual Studio] 未能完成操作 不支持此接口
  12. Intellij IDEA2017.3永久激活方法
  13. 解题(LevenshteinInstance--Levenshtein距离)
  14. HDU3439 Sequence
  15. iOS debug release
  16. iOS 时区获取问题
  17. Android中由Handler和内部类引起的内存泄漏
  18. PHP进程之信号捕捉中的declare(ticks=1)
  19. (转)Linux企业运维人员常用的150个命令分享
  20. redis学习笔记——命令执行流程

热门文章

  1. 使用有限状态机(FSM)编写的敌人AI
  2. 判断Table表中是否含有某一列
  3. 开始我的.NET的学习旅程
  4. @@IDENTITY在加触发器时返回错误的ID值
  5. 极致精简的fragment实现导航栏切换demo
  6. Linq 查询基本操作
  7. visual studio无法输入密匙解决方法
  8. google visit
  9. RecyclerView实现ViewPager效果
  10. webservice跨服务器上传附件