Java模版方法模式
来源:互联网 发布:ubuntu wine怎么安装 编辑:程序博客网 时间:2024/06/03 13:09
设计模式复习,代码是最好的说明。
定义:模版方法模式定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特点步骤,属于行为类模式。
UML:
代码:这里放一个泡茶的例子
/* 为子类提供一个算法框架 */public abstract class RefreshBeverage { public final void prepareBeverageTemplate(){ //1.烧水 boilWater(); //2.泡制 brew(); //3.倒入杯中 pourInCup(); //4.加调料,是否需要由具体子类决定 if (isCustomerWantAddCondiments()) { addCondiments(); } } //钩子函数,提供一个默认或空的实现,子类决定是否挂钩 protected boolean isCustomerWantAddCondiments(){ return true; } //抽象的基本方法 protected abstract void addCondiments(); //抽象的基本方法 protected abstract void brew(); //基本方法 private void pourInCup() { System.out.printf("倒入杯中"); } //基本方法 private void boilWater() { System.out.printf("烧水"); }}
public class Tea extends RefreshBeverage { @Override protected void addCondiments() { System.out.printf("加入柠檬"); } @Override protected void brew() { System.out.printf("80度水泡制5分钟"); } //泡茶,选择不加调料,不挂载钩子函数 @Override protected boolean isCustomerWantAddCondiments() { return false; }}
public class Coffee extends RefreshBeverage { @Override protected void addCondiments() { System.out.printf("加少许白糖"); } @Override protected void brew() { System.out.printf("70度热水10分钟"); } //coffee通常加糖,所以选择挂载钩子函数 @Override protected boolean isCustomerWantAddCondiments() { return super.isCustomerWantAddCondiments(); }}
如有错误,欢迎纠正!
阅读全文
0 0
- java 模版方法模式
- java 模版方法模式
- java 模版方法模式
- Java模版方法模式
- Java模版方法模式
- java 模版方法模式
- Java模版方法模式
- java设计模式-模版方法
- Java设计模式之模版方法模式
- Java study 07day--模版方法模式
- Java与模式 模版方法模式 Template Method
- 《java与模式》学习系列——模版方法模式
- java设计模式八--Template Method(方法模版模式)
- Java设计模式——模版方法模式
- java设计模式-模版方法模式(Template Method)
- Java设计模式(二)之模版方法模式
- java设计模式八:--Template Method(方法模版模式)
- Java设计模式笔记(4)模版方法模式
- 在Excel中怎么筛选唯一值或删除重复值以及对其应用条件格式
- c++插入排序
- 如何申请一个微信公众号的详细流程思维导图(图)
- AS中的minSdkVersion、compileSdkVersion、targetSdkVersion、buildTools及tools关系和区别
- 数据结构-线性表之顺序储存(Java实现)
- Java模版方法模式
- Linux技术(2)--Centos6.5安装MySQL
- 1004. 成绩排名 (20)
- 设计模式(七)——策略模式
- js请求成功后跳转
- WDK10驱动开发包安装教程
- js 实现防止按钮被多次点击
- OpenCV的安装经验(Linux)
- Excel中关于银行卡号的应用即每隔4位加个空格及删除空格