物件導向的好處:
可維護、可復用、可擴充套件、靈活性好;
讓業務邏輯和介面邏輯分開,降低耦合度;
在計算器的案例中,建立乙個單獨的運算符號類,用來例項化運算符號物件,並把此物件返回給呼叫者;
各種運算方法也分別用不同的類來封裝。
在主方法中,選擇需要所例項化的運算符號類的型別(用switch判斷),來例項化相應的運算方法;
定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化不會影響到演算法的客戶;
l strategy類,定義所有支援的演算法的公共介面;
l concretestrategy類,繼承於strategy,封裝具體的演算法或行為;這裡面可以定義多種不同的方法;
l context類,用乙個concretestrategy來維護、配置乙個strategy物件的引用;
class context{
strategy strategy;
public context(strategy strategy){
this.strategy = strategy;
public void contextinte***ce(){
strategy.algoritheminte***ce();
l 客戶端**:
main(){
context context;
context= new context( new concretestrategy());
context.contextinte***ce();
策略模式解析:
定義,並封裝了一系列的演算法,可以用相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合;
簡化了單元測試,因為每個演算法都有自己的類,可以定義自己的單獨測試介面;
《從設計到模式》學習筆記part1
教程前5節免費預覽,可以試看一下 一 設計原則 不管什麼新的技術,新的技能,他的產生比較導致一些標誌,以及一些標誌的產生,如果沒有這些標準來衡量的話,那我們也沒辦法知道他新在 怎麼去判斷,所以作為設計模式,那麼必然也會有他的設計原則和標準在裡面,如果這些標準和原則,那我們沒辦法去設計了。1.s 單一...
C 程式設計筆記 part 1
c 物件導向程式設計 第三版 杜茂康等編 c how to program,ninth edition p.deitel h.deitel 測試1 由於char只讀取乙個資料,那麼考慮如下 int main 結果為輸出 3 4以及 3 45再考慮連續輸入 cin a b 與一般的輸入方式沒有區別。注...
Python學習筆記 part1 資料型別
單引號 hello hello word print hello 雙引號 hello hello word print hello 三引號可換行 hello hello word print hello 字串既有單引號又有雙引號時可以用三引號 hello it s good print hello ...