WEB开发网
开发学院软件开发Java hand first 设计模式 -模板方法模式 阅读

hand first 设计模式 -模板方法模式

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示:模板方法模式 : 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新算法.重新定义算法中的某些步骤. 咖啡因饮料超类 Java代码/***咖啡因饮料超类*@authorpanxiuyan**/publicabstractclassCaffeinBeverage{

模板方法模式 : 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新算法.重新定义算法中的某些步骤.

咖啡因饮料超类

Java代码   

/** 
 * 咖啡因饮料超类 
 * @author panxiuyan 
 * 
 */ 
public abstract class CaffeinBeverage { 
 
 /** 
 * 制作方法 
 */ 
 public void perareRecip() { 
 boilWater(); 
 brew(); 
 pourInCup(); 
 if (customerWantsCondiments()) { 
  addCondimenes(); 
 } 
 
 } 
 
 /** 
 * 冲泡 
 */ 
 public abstract void brew(); 
 
 /** 
 * 添加相关的配料 
 */ 
 public abstract void addCondimenes(); 
 
 /** 
 * 把水烧开 
 */ 
 public void boilWater() { 
 System.out.println("Boiling water"); 
 } 
 
 /** 
 * 将饭料倒入杯子 
 */ 
 public void pourInCup() { 
 
 System.out.println("Pouring into cup"); 
 
 } 
 
 /** 
 * 是否添加相关的配料--勾子程序 
 * @return 
 */ 
 public boolean customerWantsCondiments() { 
 return true; 
 } 
 
}

咖啡

Java代码   

public class Coffee extends CaffeinBeverage { 
 
 //重做父类的方法 
     @Override 
 public void addCondimenes() { 
 // TODO Auto-generated method stub 
 
 } 
 
 @Override 
 public void brew() { 
 // TODO Auto-generated method stub 
 
 } 
 
   
 
}

咖啡中可以利用勾子方法.可以直接使用超类的.

Java代码   

public class Tea extends CaffeinBeverage { 
 
 @Override 
 public void addCondimenes() { 
 // TODO Auto-generated method stub 
 
 } 
 
 @Override 
 public void brew() { 
 // TODO Auto-generated method stub 
 
 } 
 
     //使用勾子方法茶不加入配料 
 @Override 
 public boolean customerWantsCondiments(){ 
 return false; 
  
 } 
}

勾子方法作用,如超类解耦.子类实行具体动作.超类确定是否执行.(别找我,我会找你的)

Tags:hand first 设计模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接