首页 > 其他 > 详细

模板方法模式

时间:2014-04-23 23:12:03      阅读:602      评论:0      收藏:0      [点我收藏+]

看下面一个例子,星巴兹的冲咖啡和泡茶
星巴兹咖啡冲泡法 1 把水煮沸 2把沸水冲泡咖啡 3把咖啡倒进杯子 4 加糖和牛奶
星巴兹茶冲泡法   1 把水煮沸 2用沸水浸泡茶叶 3把茶叶倒进杯子 4 加柠檬
注意两份冲泡法都采用了相同的算法
1 把水煮沸 2用热水泡咖啡或茶 3把饮料倒入杯子 4在杯子中加入适当的调料;
所以我们可以使用模板设计模式
public abstract class CaffeineBeverage{
 void final preparedRecipe(){
  boilWater();
  brew();
  pourIncup();
  addCondiments();
 }
 abstract void brew();
 abstract void addCondiments();
 void boilWater(){
  //具体实现 烧水
 }
 void popurIncup(){
  //具体实现 热水倒入杯子
 }

}
下面以茶为例:
public class Tea extends CaffeineBeverage{

 public void brew{
  //具体实现
 }
 public void addCondiments(){
  //具体实现
 }

 //测试
 public static void main(String args[]){
  Tea tea = new Tea();
  tea.preparedRecipe();
 }
}
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
1.模板方法定义了算法的步骤,把这些步骤的实现延迟到子类中。
2.模板方法模式为我们提供了一种代码复用的重要技术。
3.模板方法模式的抽象类还可以定义具体的方法,抽象方法和钩子。
4.抽象方法可以由子类实现。
5.钩子是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要覆盖它。
6.为防止子类改变模板方法中的算法,可以将模板方法声明为final
7.策略模式和模板方法模式都封装算法,一个用组合,一个用继承。
8.工厂方法是模板方法的一种特殊版本。

模板方法模式,布布扣,bubuko.com

模板方法模式

原文:http://www.cnblogs.com/miceal/p/3679225.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!