設計模式總結之模板方法模式

模板方法模式:在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。關於模板方法在我們生活中數不勝數,像我們做一些事情需要按照一定順序來執行,像HeadFirst上的例子,星巴克沖泡咖啡的時候,先是把水煮沸,再是沸水沖泡咖啡,把咖啡倒進杯子,加糖喝牛奶,加其他東西(其他東西根據個人愛好可以加也可以不加)。

public abstract class CaffeineBeverage {
	final void prepareRecipe(){
		boilWater();
		brew();
		pourInCpu();
		addCondments();
		if (like()) {
			addOthers();
		}
	}
	abstract void brew();
	abstract void addCondments();
	void boilWater(){
		System.out.println("Boiling water");
	}
	void pourInCpu(){
		System.out.println("Pouring into cpu");
	}
	boolean like(){
		return true;
	}
	void addOthers(){
		System.out.println("Add Others");
	}
}
public class Coffee extends CaffeineBeverage{

	@Override
	void brew() {
		System.out.println("Dripping Coffee through filter");
	}

	@Override
	void addCondments() {
		System.out.println("Adding Suger and Milk");
	}

}
public class Tea extends CaffeineBeverage{

	@Override
	void brew() {
		System.out.println("Steeping the tea");
	}

	@Override
	void addCondments() {
		System.out.println("Adding lemon");
	}

}
public class WaysTest {
	public static void main(String[] args) {
		Coffee coffee = new Coffee();
		coffee.prepareRecipe();
		Tea tea = new Tea(){
			@Override
			boolean like() {
				return false;
			}
		};
		tea.prepareRecipe();
	}
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章