是什麼:
顧名思義,就是通過模板拓印的方式, 定義模板採用抽象類來定義,公共的結構化邏輯需要在抽象類中完成,只將非公共的部分邏輯抽象成抽象方法,留待子類充實實現。
abstractclass:實現乙個模板方法,定義了演算法的骨架,具體子類將重定義primitiveoperation以實現乙個演算法的步驟。abstractclass其實就是乙個抽象模板,定義並實現了乙個模板方法。
concreteclasses:concreteclass實現父類所定義的乙個或多個抽象方法。每乙個abstractclass都可以有任意多個concreteclass與之對應,而每乙個concreteclass都可以給出這些抽象方法(也就是頂級邏輯的組成步驟)的不同實現,從而使得頂級邏輯的實現各不相同。
網上有朋友總結的例子挺好的,在此借用一下。
具體**實現例子:
abstractclass(抽象模板):
test*****類
public class test*****
public void testquestion2(
) public void testquestion3(
) public string answer1(
) public string answer2(
) public string answer3(
)}
concreteclass(實現父類所定義的乙個或多個抽象方法)
test*****a類:
/**
* 學生甲抄的試卷
*/public class test*****a extends test*****
@override
public string answer2(
) @override
public string answer3(
)}
test*****b(concreteclass):
/**
* 學生乙抄的試卷
*/public class test*****b extends test*****
@override
public string answer2(
) @override
public string answer3(
)}
客戶端:
public class test*****client
}
執行結果:
學生甲做的試卷:
楊過得到,後來給了郭靖,煉成倚天劍、屠龍刀的玄鐵可能是[
]a.球墨鑄鐵 b.馬口鐵 c.高速合金鋼 d.碳素纖維
答案: d
楊過、程英、陸無雙剷除了情花,造成[
]a.使這種植物不再傷人 b.使一種珍惜物種滅絕
c.破壞了那個生物圈的生態平衡 d.造成該地區荒漠化
答案: c
藍鳳凰致使華山師徒、桃谷六仙嘔吐不止,如果你是大夫,會給他們開什麼藥[
]a.阿司匹林 b.牛黃解毒片 c.氟哌酸 d.大量生牛奶
答案: c
學生乙做的試卷:
楊過得到,後來給了郭靖,煉成倚天劍、屠龍刀的玄鐵可能是[
]a.球墨鑄鐵 b.馬口鐵 c.高速合金鋼 d.碳素纖維
答案: a
楊過、程英、陸無雙剷除了情花,造成[
]a.使這種植物不再傷人 b.使一種珍惜物種滅絕
c.破壞了那個生物圈的生態平衡 d.造成該地區荒漠化
答案: a
藍鳳凰致使華山師徒、桃谷六仙嘔吐不止,如果你是大夫,會給他們開什麼藥[
]a.阿司匹林 b.牛黃解毒片 c.氟哌酸 d.大量生牛奶
答案: a
設計模式 模板模式(Template)
定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟 定義了乙個或多個抽象操作,以便讓子類實現,這些操作叫做基本操作 定義並實現了乙個模板方法,這個模板方法一般是乙個具體方法,它給出了乙個頂級邏輯的骨架,而邏輯的組成步驟在相應的抽...
設計模式 模板方法Template
前言 模式總覽 by xingoo 定義乙個類的框架,當它有不同的類時,再具體實現。比如,我們設計乙個跨系統的客戶端軟體,windows需要一套展現類,linux需要一套,mac還需要一套。這樣,只需要抽取他們的共同操作程式設計乙個框架類,具體使用到哪個系統時,再使用對應的類,有點像c 裡面的模板。...
設計模式 模板方法(Template)模式
適用場景 例項分析 1 建立抽象類 由 company 表示,它提供了一套固定的模板方法 recruit 用於標準化演算法的骨架 abstract class.h ifndef abstract class h define abstract class h includeclass company...