模板方法模式
2016-02-14 15:09
471 查看
http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html
该博客详细介绍了模板方法模式。个人觉得模板方法模式的使用流程
1.创建一个抽象类,抽象类中包含一个模板方法。
2.模板方法是会被重复调用的代码,其中又包含多个逻辑函数
3.模板方法中的逻辑函数又分为普通函数(在抽象类中实现,是定制的方法),定制方法(抛给外部的方法),由基类去实现的定制性的功能。
4.提供一个钩子方法,该方法为空方法或者带有boolean类型返回值的方法,通过子类重写该方法来起到控制模板方法的业务流程
使用
该博客详细介绍了模板方法模式。个人觉得模板方法模式的使用流程
1.创建一个抽象类,抽象类中包含一个模板方法。
2.模板方法是会被重复调用的代码,其中又包含多个逻辑函数
3.模板方法中的逻辑函数又分为普通函数(在抽象类中实现,是定制的方法),定制方法(抛给外部的方法),由基类去实现的定制性的功能。
4.提供一个钩子方法,该方法为空方法或者带有boolean类型返回值的方法,通过子类重写该方法来起到控制模板方法的业务流程
public abstract class AbstractTemplate { /** * 模板方法 */ public void templateMethod(){ //调用基本方法 abstractMethod(); if(hookMethod()){ concreteMethod(); } } /** * 定制方法的声明(由子类实现) */ protected abstract void abstractMethod(); /** * 钩子方法(空方法) */ protected boolean hookMethod(){ return true; } /** * 基本方法(已经实现) */ private final void concreteMethod(){ //业务相关的代码 } }
public class ConcreteTemplate extends AbstractTemplate{ //基本方法的实现 @Override public void abstractMethod() { //业务相关的代码 } //重写父类的方法 @Override public boolean hookMethod() { return false; } }
使用
AbstractTemplate a1=new ConcreteTemplate (); a1.templateMethod();
相关文章推荐
- [BZOJ3916] [Baltic2014]friends
- 理解RESTful架构
- “Genymotion运行Android模拟器一直卡在开机界面”的解决办法
- c++ getline()函数
- 杭电1002:A + B Problem II
- java 趣味题目解题。
- 每天一个linux命令(19):find 命令概览
- EasyUi 中datagrid 实现查询方法
- 【流量】netflow 基础知识
- rpmbuild常用命令
- ZOJ3460 Missile(神奇的建图)
- centos关闭防火墙
- hdu 5626 Clarke and points 最大曼哈顿距离
- python paramiko小结
- html5
- PagerSlidingTabStrip实现网易新闻导航栏效果
- 常见文件类型识别
- poj1509 最小表示法
- 理解A*寻路算法具体过程
- 关于字符编码