設計模式之模板模式

1.模板方法定義: 定義一個操作中的算法框架,而將一些步驟延遲到子類中。這樣使得子類可以不改變一個算法的結構即可從定義該算法的某些特定步驟。Define the skeleton of an algorithm in an operation, deferring some steps to subclass. Template Method lets subclass redefine certain steps of an algorithm without changing the algoritms's structure.

2.簡單示例代碼

public abstract class TemplateC {

	public abstract void Yunqiu();
	public abstract void Guoren(); //算法的具體步驟延遲到子類實現。
	public abstract void Toulan();
	
	public final void getScore()   //定義算法骨架. 爲了防止算法骨架被修改 此處可以定義爲final
	{
		System.out.print("我首先");
		Yunqiu();
		System.out.print("我然後");
		Guoren();
		System.out.print("我最後");
		Toulan();
	}
	
}
public class TemplateSubC extends TemplateC{

	@Override
	public void Yunqiu() {          //子類實現具體算法
		// TODO Auto-generated method stub
		System.out.println("用左手運球");
	}

	@Override
	public void Guoren() {
		// TODO Auto-generated method stub
		System.out.println("轉身過人");
	}

	@Override
	public void Toulan() {
		// TODO Auto-generated method stub
		System.out.println("後仰跳投");
	}

}
我首先用左手運球
我然後轉身過人
我最後後仰跳投

3. 模板方法的優點: 封裝不變的部分,擴展可變的部分。封裝了一個具體算法結構(執行順序),然後具體算法可以由不同子類實現,使得子類可以根據具體情況擴展。

缺點:子類執行結果影響了父類的結果,在複雜項目中,會帶來代碼閱讀的難度。

發佈了43 篇原創文章 · 獲贊 26 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章