首先看乙個不使用模版方法設計模式的幾個類
可以將student類和worker類中的day()方法內的**看作是演算法,可以發現,student類和worker類的演算法相同,不同的只是演算法的每乙個步驟的具體實現細節。
兩個類中的演算法相同,每個類也都要寫一遍,**冗餘,而且修改演算法步驟也不方便
public
class
student
}public
class
worker
}/*測試類*/
public
class
test
}
public
abstract
class
person
/** * 這就是具體的實現,這個具體的步驟可以延遲到子類中完成
* 這個方法通常是抽象方法
*/protected
abstract
void
do1();
protected
abstract
void
do2();
protected
abstract
void
do3();
}public
class
student
extends
person
@override
protected
void
do2(
)@override
protected
void
do3()}
public
class
worker
extends
person
@override
protected
void
do2(
)@override
protected
void
do3()}
public
class
test
}
模版方法設計模式屬於行為行設計模式
模版方法有乙個特點:do***()
模板方法設計模式的主要作用:
核心演算法得到保護
核心演算法得到復用
在不改變演算法的前提下,卻可以重新定義演算法步驟的具體實現
模板方法設計模式的例子
設計模式 模版方法
設計模式 模版方法 場景小張的團隊最近接受乙個需求,實現實現一家咖啡店的沖泡咖啡和茶的沖泡自動化。之前這家咖啡店都是由咖啡師傅手動進行調製咖啡和茶。現在咖啡店需要引入自動化的點單和調製飲料的系統,小張負責實現調製飲料的功能。咖啡師傅手工沖泡咖啡和茶的流程 沖泡咖啡 把水煮沸 用沸水沖泡咖啡 把咖啡倒...
模版方法設計模式
模版方法設計模式 在定義功能時功能的一部分是確定的,但是有一部分是不確定的,而確定的部分在使用不確定的部分 那麼這時就將不確定的部分暴露出去,由該類的子類去完成。如下面求程式執行時間的例子 父類1 abstract class gettime 8abstract void coderun 不確定的 ...
設計模式 模版方法模式
模版方法模式說明 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模版方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模版方法模式就是提供了乙個很好的 復用平台,是通過把不變行為搬移到超類,去除子類的重複 來體現它的優勢。下面直接看此模式的簡單模版 抽象模版,定義並實...