一:涉及角色:
抽象模版(abstract template):
1、定義乙個 or 多個抽象(方法),給子類實現,
2、定義實現乙個模板方法,呼叫(1) 中定義的抽象方法,作為 **邏輯骨架(即操作步驟),子類中實現那些抽象方法,做相應的具體實現,
具體類(concrete class):實現 [抽象模版] 中的抽象方法,
二、使用 策略模式
1. 一次性實現乙個演算法的不變的部分,並將可變的行為留給子類來實現。
2. 各子類中公共的行為應被提取出來並集中到乙個公共父類中以避免**重複。首先識別現有**中的不同之處,並且將不同之處分離為新的操作。
最後,用乙個呼叫這些新的操作的模板方法來替換這些不同的**。
3.控制子類擴充套件。
三、故事說明
看過《如何說服女生**》這部經典文章嗎?女生從認識到**的不變的步驟分為巧遇、打破僵局、展開追求、接吻、前戲、動手、愛撫、進去八大步驟(template method),但每個步驟針對不同的情況、不同人,都有不一樣的做法,這就要看你隨機應變啦(具體實現);
模板方法模式:模板方法模式準備乙個抽象類,將部分邏輯以具體方法以及具體構造子的形式實現,然後聲明一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。先制定乙個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。
//抽象模版(abstract template):
具體類(concrete class)a:public abstract class abstractclass
}
具體類(concrete class)b:public class concreteclassa extends abstractclass
@override
public void dosend()
}
客戶端呼叫public class concreteclassb extends abstractclass
@override
public void dosend()
}
public static void main(string args)
行為模式 Template 模式
定義 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。template method使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟 主要解決在軟體構建過程中,對於某一項任務,常常有穩定的整體操作結構,但各個子步驟卻有很多改變的需求,或者由於固有的原因而無法和任務的整體結構...
template之函式模版
函式模板 通用函式適用於不同資料型別 1 所有函式模板的定義都是用關鍵字template開始的,該關鍵字之後是使用尖括號括起來的模板參數列。下面以絕對值函式模板為例 在編譯過程中,有實參的型別來決定模板引數的型別。在函式模板例項化的過程中,不能完成型別轉換。比如 template void fun1...
C 模版template的用法
模板是c 支援引數化多型的工具,使用模板可以使使用者為類或者函式宣告一種一般模式,使得類中的某些資料成員或者成員函式的引數 返回值取得任意型別。c 中的模板有函式模版和類模版兩種形式,下面將分別介紹。template 返回型別 函式名 引數列表 其中template和class是關見字,class可...