strategy模式的起因跟template模式是一樣的,只不過,它是在template模式上進行了一層改進。我們知道template模式是充分利用了多型的特點,用繼承的方式實現了依賴倒轉,然而正是繼承的強制性約束關係給它帶來了不足之處。即,abstract_class的子類中各種原語方法primitive_operation()無法共享,試想,當乙個類似於abstract_class的變體abstract_class_2定義了不一樣的template_method(),其原語方法想共用前面提到的primitive_operation(),在繼承體系中是沒法實現的。因為concrete_class跟abstract_class_2沒有繼承關係。
strategy模式用的是組合,而不是繼承,見uml圖:
《設計模式》之十三 策略模式
strategy pattern 策略模式是一種比較簡單的模式,其定義如下 define a family of algorithms,encapsulate each one,and make them interchangeable 定義一組演算法,將每個演算法封裝起來,並且使它們可以互換 通用...
C 與設計模式(2) 策略模式
策略模式是指提供介面,讓使用者使用可替換的演算法。enum alg 標籤 抽象介面 class algorithm 三種具體的替換演算法 class algorithm1 public algorithm class algorithm2 public algorithm class algorit...
c 設計模式 策略模式
策略模式,看完策略模式最大的感受就是將所有的演算法封裝起來,讓它們之間可以相互替換,這個模式讓演算法的變化不會影響到使用者。我寫的例子還是之前的那個簡易計算器,策略模式可以和簡單工廠模式結合,在客戶端中只需認識乙個concent類,將所有的演算法物件建立以及演算法的使用全部封裝在乙個類中,即conc...