您的位置:首页 > 编程语言 > Java开发

java 设计模式之模板方法模式

2017-05-13 09:40 337 查看
模板方法模式:定义一个具体的框架(抽象类),每个子类调用该框架,加入自己的实现。

具体例子:

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方法进行重写。

钩子方法的作用:钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写。

优点

适用于遵循一定的相似逻辑的操作。

封装性好,

复用性好。

屏蔽细节(对子类屏蔽细节)

便于维护

缺点

单继承,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式