Template设计模式
来源:互联网 发布:手机淘宝优惠券转化 编辑:程序博客网 时间:2024/05/23 22:09
前言:著名的好莱坞原则,即don't call me ,i will call you,模板设计模式就是遵循这一原则的
一、使用场合:
模板设计模式:一些事物流程是固定,流程中的具体步骤有的是固定的实现,有的步骤有不同的实现,
二、基本思路以及实例:
定义一个抽象类Drink,Coffee类和Tea类继承该类,在Drink类中定义一个generateProcess方法,包含了饮料冲泡的流程(固定),以及具体的boil(),addMaterial()等方法(有的固定有的不固定)
其中使用到了钩子函数isCustomerWant(),用于控制某个步骤是否要在子类中实现。
钩子函数:在父类中提供一个默认实现,具体控制在子类中实现
三、具体代码
package com.dp.template;public abstract class Drink {
protected void generateProcess(){
boil();
addMaterial();
addWater();
if(isCustomerWant()){
addIngrediant();
}
}
public boolean isCustomerWant() {
// TODO Auto-generated method stub
return true;
}
//烧水,共有步骤
public void boil(){
System.out.println("将水烧开。。。");
}
//放入原料,自定义步骤
public abstract void addMaterial();
//加水冲泡饮料
public void addWater(){
System.out.println("开始冲泡");
}
//添加调味,自定义步骤
public abstract void addIngrediant();
}
package com.dp.template;
public class Coffee extends Drink {
@Override
public void addIngrediant() {
// TODO Auto-generated method stub
System.out.println("加入牛奶");
}
@Override
public void addMaterial() {
// TODO Auto-generated method stub
System.out.println("放入咖啡豆");
}
}
package com.dp.template;
public class Tea extends Drink {
@Override
public void addIngrediant() {
// TODO Auto-generated method stub
System.out.println("加入柠檬");
}
@Override
public void addMaterial() {
// TODO Auto-generated method stub
System.out.println("放入茶叶");
}
@Override
public boolean isCustomerWant() {
// TODO Auto-generated method stub
return false;
}
}
package com.dp.template;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
//冲咖啡
System.out.println("开始泡咖啡");
Drink dk = new Coffee();
dk.generateProcess();
System.out.println("咖啡泡好了");
System.out.println();
//泡茶
System.out.println("开始泡茶");
dk = new Tea();
dk.generateProcess();
System.out.println("茶泡好了");
}
}
- 设计模式 Template模式
- 设计模式 - Template模式
- 设计模式之Template
- 设计模式之Template
- 设计模式之Template
- 设计模式之Template
- 设计模式之Template
- Template设计模式
- 设计模式之Template
- 设计模式之Template
- 设计模式之Template
- 设计模式之 Template
- 设计模式之Template
- 设计模式之Template
- 设计模式-template method
- Template Method-----设计模式
- Template Method设计模式
- 设计模式-template
- 复制构造函数为什么必须是引用?
- 编程技巧 - 封装技巧 - 2
- iOS面试总结
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- 通过重写方法提高可用性,在此用作对多种不同要求的字段校验
- Template设计模式
- Android开发小知识-Spinner控件使用
- 作业之中——个人心得
- Html5 30个小例子
- Javascript滑屏切换场景
- Java并发编程:Thread类的使用
- mysql起动报错The server quit without updating PID file /usr/local/mysql/data/
- 优秀的Java工程师需要掌握的10项技能
- volley请求网络图片