Head First设计模式笔记(模板方法模式)
来源:互联网 发布:qq显示网络状态准确吗 编辑:程序博客网 时间:2024/05/23 01:25
在研究模板模式之前,先看2段代码
1.
public class Coffee { void prepareRecipe(){ boilWater(); brewCoffeeGrinds(); pourInCup(); addSugarAndMilk(); } public void boilWater(){ System.out.println("boiling water..."); } public void brewCoffeeGrinds(){ System.out.println("dripping coffee through filter"); } public void pourInCup(){ System.out.println("pouring into cup"); } public void addSugarAndMilk(){ System.out.println("adding sugar and milk"); }}
2.
public class Tea { void prepareRecipe(){ boilWater(); steepTeaBag(); pourInCup(); addLemon(); } public void boilWater(){ System.out.println("boiling water..."); } public void steepTeaBag(){ System.out.println("steeping the tea..."); } public void addLemon(){ System.out.println("adding lemon..."); } public void pourInCup(){ System.out.println("Pouring into cup..."); }}
我们可以看出上面2段代码很类似,但是确不是完全一样
下面我们来看看模板方法的定义
模板方式:定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤
public abstract class CaffeeineBeverage { final void prepareRecipe(){ boilWater(); brew(); pourInCup(); addCondiments(); } void boilWater() { System.out.println("boiing water..."); } //不一样的部分做成抽象类,等待子类去实现 abstract void brew(); abstract void addCondiments(); void pourInCup(){ System.out.println("pouring into cup..."); }}
写一个超类,公用的方法放在超类中实现,不同的方法做成抽象类,以便子类来实现
public class Coffee extends CaffeeineBeverage{ @Override void brew() { System.out.println("driping coffee through filter..."); } @Override void addCondiments() { System.out.println("adding sugar and milk"); }}
如果是有的方法在子类中可以实现也可以不实现的话,在超类中可以做一个钩子,模板模式也是比较简单,但在实际使用的过程中,一定要注意步骤拆分的粒度,不要拆分的太细,太细导致子类要实现的东西较多,太粗的话,又达不到效果,因此要更加实际的情况有效的拆分
阅读全文
0 0
- Head First设计模式笔记(模板方法模式)
- 《Head first设计模式》学习笔记 - 模板方法模式
- 《 Head first设计模式 》学习笔记 – 模板方法模式
- Head First设计模式-模板方法模式
- 《Head First 设计模式》模板方法模式
- 模板方法模式(Head First设计模式 读书笔记)
- Head First 设计模式(八)模板方法模式
- 《Head First 设计模式》阅读笔记(八)——模板方法模式
- Head First设计模式学习笔记-------(9)模板方法模式
- Head First设计模式笔记(工厂方法模式)
- 《Head First 设计模式》之模板方法模式
- <Head First 设计模式>:模板方法模式:Beverage
- 调侃《Head First设计模式》之模板方法模式
- Head First设计模式学习—模板方法、策略模式
- Head First 设计模式之模板方法模式
- Template Method-模板方法模式《Head First 设计模式》
- 《Head First 设计模式》学习笔记——模板方法模式
- 《Head First 设计模式》学习笔记——模板方法模式
- [Amazon] Anagrams
- 【ionic3入门】ionic3初尝试之环境搭建
- Java基础总结(1)
- Spring 依赖注入
- PHP并发IO编程之路
- Head First设计模式笔记(模板方法模式)
- mui开发APP教程之mui.ajax请求后出现“加载中”
- Java 动态代理2
- CentOS 7 使用阿里云的yum源
- jquery ui datetimepicker 弹出方向
- Spring AOP 注解实现
- csdn如何转载
- 金融风控-->客户流失预警模型-->神经网络建模
- Spring AOP XML配置实现