與橋接模式類似,只不過橋接模式是將乙個類的部分屬性抽離為乙個繼承體系,再通過組合的方式加入該類中,而策略模式是將乙個類的部分方法抽離為乙個繼承體系,再通過組合的方式加入該類中,例如暑期出行為乙個類,出行的方式可能有很多,坐火車或者坐飛機,那麼可以將交通方式抽離為乙個繼承體系,通過介面傳入,以適配更靈活的使用場景,並實現類與介面的解耦,符合迪公尺特原則。
class
transportation
;class
bytrain
:public transportation };
class
byplane
:public transportation };
class
onholiday
void
gogogo()
private
: transportation *transportation_;};
intmain()
在stl中也有類似的使用,但沒有使用繼承,例如std::sort可以接受第三個引數用來定義比較兩個元素的規則。 設計模式 策略模式C 實現
strategy pattern 定義一組演算法,將每個演算法都封裝起來,並且使他們可以相互替換 也叫政策模式 class strategy protected strategy public virtual strategy 0 virtual void dosomething 0 class c...
設計模式C 實現二 策略模式
策略模式 strategy 定義演算法家族,分別封裝起來,讓這些演算法直接可以相互替換,我們可以自由新增或者修改演算法而不會影響客戶.優點 簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。如果我們在客戶端為了判斷使用哪個演算法而使用switch語句來分析,我們可以使用策略模式...
設計模式C 實現(2) 策略模式
對外的介面一樣,只是各自實現上存在差異。用策略模式來封裝演算法,效果比較好。下面以快取記憶體 cache 的替換演算法為例,實現策略模式。抽象介面 class replacealgorithm 三種具體的替換演算法 class lru replacealgorithm public replacea...