模板方法(template method)模式定義了乙個演算法的步驟,並允許子類別為乙個或多個步驟提供其實踐方式。讓子類別在不改變演算法架構的情況下,重新定義演算法中的某些步驟。c#示例
// 計算薪資抽象基類
public abstrace class salary
// 考勤
public abstract double attendance();
// 績效
public abstract double performance();
}// 網路部薪資
public class netdepartmentsalary: salary
public override double performance()
}// 人力資源部薪資
public class employeeresourcesalary: salary
public override double performance()
}// 消費場景
}
思考:如何改進本示例以計算各部門不同員工的應得薪資?
vuejs示例
vuejs示例中,元件top-bar, body-left, 以及 router-view, 都可以看作是模板方法的子類實現,該示例本身的html則相當於c#示例中的抽象基類。
在父類中形式化的定義乙個演算法,由它的子類實現細節的處理,在子類實現詳細的業務邏輯時不會改變演算法中步驟的執行次序;
是一種基於繼承的**復用技術,提取類庫中的公共行為並將其放在父類中,通過子類實現不同的行為,鼓勵開發人員使用繼承來實現**復用。
需要為每個基本方法的不同實現提供乙個子類的實現,如果父類中可變的基本方法太多,將會導致類的個數增加,系統越來越龐大,設計也更加抽象化,此時,可結合橋接模式來進行設計。
編寫示例,實現不同部門間工資的計算
模板方法模式是一種簡單常用的模式,我們在進行開發的時候,會經常有意無意地使用它,一般來說,該模式不會單獨使用,跟其他模式混用的情況比較多,如工廠,策略模式等。
改進版的應得薪資計算方法
本文完。
模板方法模式
有這樣乙個場景 乙個演算法或流程,它的步驟以及步驟之間的順序是固定的,但具體的某一步可能有不同的實現。對於這麼乙個場景,可以建立多個類,各個類實現不同的實現,但是這樣的缺點是 易錯 難改,易錯 應為步驟和順序是固定的,而且在每個類中都要寫一遍,程式設計師怎有心情不好的時候,就有可能把其中某一步給寫錯...
模板方法模式
模板方法模式 定義乙個演算法框架,將裡面的操作步驟推遲到子類中去執行,這樣使得子類不用改變框架,只需改變某些操作步驟方法 ifndef test h define test h include include using namespace std class test virtual test v...
模板方法模式
模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。還可以使用鉤子對可選部分進行判斷。include include using namespace std class caffeinebeverage ...