設計模式之十四 Strategy 策略

2021-06-10 11:39:57 字數 856 閱讀 7240

問題:

在我們生活中,我們的做的事情都有一些共性,例如,很多事情都有類似的操作過程,這些東西應用到程式設計中也是一樣的;如果我們把每件事情都抽象成乙個類,這樣會有大量重複的工作;

解決方案:

我們把這些演算法的邏輯抽象成乙個類,把具體的演算法實現抽象到乙個介面(c++

就是純虛類,純虛類與虛基的差別:前者是有乙個純虛函式,後者有乙個公共基類,為了避免回合的時候產生多個副本)。讓這個邏輯類來組合這個介面,然後把實現演算法的類委託給這個介面。這就是策略模式;

strategy和

template

辨析:

strategy和

template

都是解決這類問題的方法,他們從不同的方式來解決;

strategy

用的是組合方式。把具體實現組合到邏輯抽象中。而

template

用的是繼承方式,邏輯抽象和介面放到基類。通過繼承方式,把實現放到子類中;

源**:

#include using namespace std;

class strategy

protected:

strategy(){} };

class concreatestrategy1:public strategy

content(strategy *str)

~content()

} void setstrategy(strategy *str)

else

strategy=str;

}private:

strategy *strategy;

};void main()

;

設計模式之策略模式 Strategy

策略模式 定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶 只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性 涉及三個角色 環境 context 角色 持有乙個strategy的引用,通過條件來分...

設計模式之 Strategy 策略模式

策略模式簡述 優點 1 可以動態的改變物件的行為 缺點 1 客戶端必須知道所有的策略類,並自行決定使用哪乙個策略類 2 策略模式將造成產生很多策略類 今天本人實現的主要是 策略模式之comparable和comparator介面。用大白話說,就是我們在比較大小的時候,在類中定義乙個策略的比較器,由該...

設計模式之策略模式(Strategy)

定義 策略模式定義並封裝了一系列演算法,它們之間可以相互替換,且演算法的變化不會對演算法的使用者造成影響。優點 靈活替換,復用性強 完美支援開閉原則。缺點 過多的策略拓展會使 變得複雜,不容易理解。從定義中可以得知該模式會定義一系列的演算法,這裡需要考慮到開閉原則使用介面 實現的方式進行拓展 而演算...