設計模式學習(C 實現)13 策略模式

2021-10-02 09:41:37 字數 563 閱讀 4199

與橋接模式類似,只不過橋接模式是將乙個類的部分屬性抽離為乙個繼承體系,再通過組合的方式加入該類中,而策略模式是將乙個類的部分方法抽離為乙個繼承體系,再通過組合的方式加入該類中,例如暑期出行為乙個類,出行的方式可能有很多,坐火車或者坐飛機,那麼可以將交通方式抽離為乙個繼承體系,通過介面傳入,以適配更靈活的使用場景,並實現類與介面的解耦,符合迪公尺特原則。

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...