模板方法
package com.hycz.design.pattern.template;
/**
* Created with IntelliJ IDEA.
* User: shangke
* Date: 6/17/13
* Time: 11:33 AM
* To change this template use File | Settings | File Templates.
*/
public abstract class CaffeineBeverage {
// 模板方法
public final void prepareRecipe() {
boilWater();
brew();
pourInCup();
addCondiments();
hook();
}
public void boilWater(){
System.out.println("boil water.");
}
public void pourInCup(){
System.out.println("pour in cup.");
}
public abstract void brew();
public abstract void addCondiments();
public void hook(){} // 钩子方法
}
package com.hycz.design.pattern.template;
/**
* Created with IntelliJ IDEA.
* User: shangke
* Date: 6/17/13
* Time: 11:37 AM
* To change this template use File | Settings | File Templates.
*/
public class Tea extends CaffeineBeverage {
@Override
public void brew() {
//To change body of implemented methods use File | Settings | File Templates.
System.out.println("tea brew .");
}
@Override
public void addCondiments() {
//To change body of implemented methods use File | Settings | File Templates.
System.out.println("tea add condiment .");
}
}
package com.hycz.design.pattern.template;
/**
* Created with IntelliJ IDEA.
* User: shangke
* Date: 6/17/13
* Time: 11:39 AM
* To change this template use File | Settings | File Templates.
*/
public class Caffe extends CaffeineBeverage {
@Override
public void brew() {
//To change body of implemented methods use File | Settings | File Templates.
System.out.println("caffe brew .");
}
@Override
public void addCondiments() {
//To change body of implemented methods use File | Settings | File Templates.
System.out.println("caffe add condiments .");
}
}
package com.hycz.design.pattern.template;
/**
* Created with IntelliJ IDEA.
* User: shangke
* Date: 6/17/13
* Time: 11:39 AM
* To change this template use File | Settings | File Templates.
*/
public class Main {
public static void main(String[] args) {
CaffeineBeverage tea = new Tea();
tea.prepareRecipe();
}
}