设计模式之模板方法模式
2016-04-06 23:22
197 查看
定义: 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。
模式中的角色
抽象类:实现了模板方法,定义了算法的骨架。
具体类:实现抽象类中的抽象方法,已完成完整的算法。
通用代码实现:
抽象类:
1.模板模式定义了算法的步骤,把这些步骤的实现延迟到子类
2.模板模式为我们提供了一个代码复用的技巧
3.模板抽象类中可以定义具体方法、抽象方法和钩子方法
4.为了防止子类改变模板中的算法,可以将模板方法声明为final
5.钩子是一种方法,它在抽象类中不做事,或只做默认的事,子类可以选择要不要实现它
模式中的角色
抽象类:实现了模板方法,定义了算法的骨架。
具体类:实现抽象类中的抽象方法,已完成完整的算法。
通用代码实现:
抽象类:
public abstract class AbstractTemplate { /** * 模板方法 */ public void templateMethod(){ //调用基本方法 abstractMethod(); hookMethod(); concreteMethod(); } /** * 基本方法的声明(由子类实现) */ protected abstract void abstractMethod(); /** * 基本方法(空方法) */ protected void hookMethod(){} /** * 基本方法(已经实现) */ private final void concreteMethod(){ //业务相关的代码 } }
具体实现子类:
public class ConcreteTemplate extends AbstractTemplate{ //基本方法的实现 @Override public void abstractMethod() { //业务相关的代码 } //重写父类的方法 @Override public void hookMethod() { //业务相关的代码 } }
1.模板模式定义了算法的步骤,把这些步骤的实现延迟到子类
2.模板模式为我们提供了一个代码复用的技巧
3.模板抽象类中可以定义具体方法、抽象方法和钩子方法
4.为了防止子类改变模板中的算法,可以将模板方法声明为final
5.钩子是一种方法,它在抽象类中不做事,或只做默认的事,子类可以选择要不要实现它
相关文章推荐
- Java如何获得一个类里面的各个属性和类型
- 快速排序算法
- 0406复利实验--结队(冯铭杰 梁毅乾)
- 二叉树的创建即遍历(递归方式)
- Java各种日期格式的获取和设置指定日期
- JS执行环境与作用域
- hadoop-2.6.0伪分布式单机安装傻瓜教程
- 【FFmpeg】ffplay播放rtsp视频流花屏问题
- Could not find Developer Disk Image
- 匹配极其相关问题(四)
- PHP语言 -- 面向对象和面向过程的区别
- 路漫漫其修远兮···VB 来15个数尝尝咸淡
- vs2013 制作安装包
- MyEclipse(以下简称mye)中的.jsp .html的可视化编辑对很多人来说,作用不是很大,反而影响视觉和软件的启动速度。
- Memcached主从同步备份负载配置
- Hadoop学习笔记(1):WordCount程序的实现与总结
- openwrt开发<2>环境搭建
- win10 与ubuntu14.04.4 LTS双系统时间不统一解决
- 获取程序的版本名,版本名,应用名称
- 欢迎使用CSDN-markdown编辑器