模板方法模式
来源:互联网 发布:程序员被骗婚女方 编辑:程序博客网 时间:2024/05/22 00:14
模板方法的定义
模板方法模式是用来创建一个算法的模板,模板有一个方法构成,更具体的说,这个方法将算法定义一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。
类图:
Define the skeleton of an algorithm in an operation ,deferring some steps to subclasses.
Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure.
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类在不改变算法机构的情况下,重新定义算法中的步骤。
模板方法模式是用来创建一个算法的模板,模板有一个方法构成,更具体的说,这个方法将算法定义一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。
类图:
模板方法模式是用来创建一个算法的模板,模板有一个方法构成,更具体的说,这个方法将算法定义一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。
测试结果:
结构特点:
1.模板类必须为抽象类
2.模板方法必须为final类型
星巴兹咖啡冲泡过程
1.把水煮开
2.用沸水冲泡咖啡
3.把咖啡倒进杯子
4.加糖和牛奶
星巴兹茶冲泡过程
1.把水煮沸
2.用沸水浸泡茶叶
3.把茶倒进杯子
4.加柠檬
注意:这两种冲泡方法采用了相同的算法。所以进行泛化后可采用相同的模板方式
1.将水煮沸
2.冲泡
3.把饮料倒进杯子
4.加调料
/*** * 模板方法类,定义饮料泡澡的全过程的算法 * @author jiazq * */public abstract class CaffeineBeverage { /** * 模板方法 --制造饮料全过程 */ final void prepareRecipe(){ boilWater(); brew(); pourInCup(); addCondiments(); } private void pourInCup() { System.out.println("将饮料倒入杯子中 "); } private void boilWater() { System.out.println("开水"); } abstract void brew(); abstract void addCondiments();}
/** * 子类--咖啡 * @author jiazq * */public class Coffee extends CaffeineBeverage {@Overridevoid addCondiments() {System.out.println("。。最后放入牛奶和糖进去。。。");}@Overridevoid brew() {System.out.println("。。注入咖啡进去。。。");}}
/** * 子类--茶 * @author jiazq * */public class Tea extends CaffeineBeverage{@Override void addCondiments() {System.out.println("。。最后放些柠檬进去。。。");}@Override void brew() {System.out.println("放入茶叶....");}}
public class TempleTest {public static void main(String args[]){Tea tea = new Tea(); //创建一杯茶tea.prepareRecipe();Coffee coffee = new Coffee(); //创建一杯咖啡coffee.prepareRecipe();}}
测试结果:
模板方法模式是用来创建一个算法的模板,模板有一个方法构成,更具体的说,这个方法将算法定义一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。
0 0
- 深入浅出模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法设计模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 画表格
- sublime插件BracktetHighLighter详细配置
- 数据结构课程设计报告(信管1134班26 )
- 超实用的JavaScript技巧及最佳实践
- Unity之点击实现点击种植
- 模板方法模式
- Android之ListView原理学习与优化总结
- 连载《一个程序员的成长历程》-14.萌生创业的想法
- Hibernate查询(二)
- 对互联网海量数据实时计算的理解
- bzoj3572: [Hnoi2014]世界树
- Objective - C基础: 第一天 - 8.OC对象与函数
- IOS8下,百度地图无法定位解决办法
- 黑马程序员——OC内存管理