java 设计模式之模板方法模式
2017-05-13 09:40
337 查看
模板方法模式:定义一个具体的框架(抽象类),每个子类调用该框架,加入自己的实现。
具体例子:
具体分析:
定义一个模板方法,里面具体调用了一些private,protected修饰的方法,其中priavte修饰表示:子类不需要对该方法重写。protected:子类可选择的对该方法进行重写。
子类继承对应模板方法的抽象类,并对protected方法进行重写。
钩子方法的作用:钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写。
优点
适用于遵循一定的相似逻辑的操作。
封装性好,
复用性好。
屏蔽细节(对子类屏蔽细节)
便于维护
缺点
单继承,
具体例子:
package com.java.模版方法模式; /** * @author wangpei * @version 创建时间:2017年5月12日 下午8:35:00 类说明 ,封装变与不变, */ public abstract class RefreshReverage { /* 封装所有子类遵循的算法框架 */ public void zhunbeiyinliao() { zhufei(); // 制饮料 make(); // 倒入杯中 pour(); // 添加调料 if(IsAdd()) add(); } private void zhufei() { System.out.println("将水煮沸"); } private void make() { System.out.println("make coffee"); } protected abstract void pour(); protected abstract void add(); protected boolean IsAdd(){//钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写 return true; } }
package com.java.模版方法模式; /** * @author wangpei * @version 创建时间:2017年5月12日 下午8:46:31 * 类说明 */ public class MakeTea extends RefreshReverage{ @Override protected void pour() { System.out.println("将茶叶导入"); } @Override protected void add() { System.out.println("添加糖"); } public static void main(String[] args) { RefreshReverage c=new MakeTea(); c.zhunbeiyinliao(); } protected boolean IsAdd(){//钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写 return false; } }
具体分析:
定义一个模板方法,里面具体调用了一些private,protected修饰的方法,其中priavte修饰表示:子类不需要对该方法重写。protected:子类可选择的对该方法进行重写。
子类继承对应模板方法的抽象类,并对protected方法进行重写。
钩子方法的作用:钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写。
优点
适用于遵循一定的相似逻辑的操作。
封装性好,
复用性好。
屏蔽细节(对子类屏蔽细节)
便于维护
缺点
单继承,
相关文章推荐
- java 设计模式 学习笔记(9) 模板方法模式
- java_23种设计模式之模板方法模式
- java设计模式之模板方法模式
- 《Java基础学习笔记》JAVA设计模式之模板方法
- Java设计模式透析之 —— 模板方法(Template Method)
- Java设计模式—模板方法(Template Method)
- java设计模式之模板方法
- java设计模式---模板方法模式
- Java设计模式透析之 —— 模板方法(Template Method)
- Java设计模式之模板方法
- Java设计模式 Design Pattern:模板方法 Template Method
- Java设计模式 Design Pattern:模板方法 Template Method
- java(2) 设计模式-模板方法设计模式
- java设计模式---模板方法模式
- 深入浅出Java模式设计之模板方法模式
- JAVA设计模式——模板方法模式
- Java设计模式七:模板方法(Template Method)
- java设计模式---Template Method模板方法---实际处理交给子类
- java设计模式---模板方法模式
- Java设计模式之模板方法