C 策略模式實現

2021-10-08 19:43:34 字數 806 閱讀 1126

**收銀時,無論是打折還是滿減和積分,其實內容都封裝一些具體的演算法實現,這些演算法本身都只是一些策略。

在物件導向中,乙個**經常會做各種活動,由於簡單工廠模式中包含了所有的收費方式,**經常殺熟客,每次如果重新建立收費方式,都需要重新部署,變得非常麻煩,這些演算法本身都只是一種策略,咱們就把策略的不同區別看來。

class

strategy

//演算法類,不做具體例項化

;

下面是各種演算法的實現策略。如果有不同的收費方式,我們只需要在演算法類中增加策略,增加乙個實現即可,完全符合開閉原則。

class

concreatestrategya

:public strategy};

class

concreatestrategyb

:public strategy};

class

concreatestrategyc

:public strategy

};

class

context

//用此類來配置,維護傳入的策略類

void

contextinte***ce()

};

客戶端**如下:

int

main()

但是策略模式最糟心的是,為什麼我客戶端要去判斷演算法呢,你乙個平台天天都是各種活動,鬼知道哪天開始哪天結束,太複雜了!

明天我就來把策略模式和簡單工廠模式結合一下!

c 實現策略模式

策略模式 strategy 它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。上面是 大話設計模式 中給出的定義,感覺這個概念給的不好,看了之後不能完全清晰明白該模式 可能自己水平太水的原因吧 在 effective c 中指出,策略模式是v...

策略模式 C 實現

include include include 問題 和工廠模式的本質區別?using namespace std abstract sort class strategy class class super sort virtual void sort int a,int l,int r conc...

C 策略模式實現

策略模式 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用的客戶。strategy.cpp 定義控制台應用程式的入口點。include stdafx.h includeusing namespace std class strategy class co...