1.在武大郎生气的时候,潘金莲就会在门口挂五角星提示西门庆,武大郎生气!(至于是什么原因就不说了,如武大郎今天烧饼没赚钱,还被打了一顿,或武大郎出门被天上鸟拉屎)
2.武大郎高兴的时候,潘金莲在门口挂三角符号,提示西门庆武大郎很高兴,我们三更七里桥约会,(今天赚钱了,多喝了几杯醉意十足早早入睡)
3。武大郎病重 ,潘金莲在门口挂十字架提示西门庆,来我家约会更刺激。(武大郎经常早出晚归,风催日晒,得了重感冒,古人云风寒)
xxxx等等武大郎的状态,根据武大郎的状态潘金莲就有相应的策略来应对,以保全他们之间鱼水之欢。
定义一个策略接口
class strategy{
public:
strategy(void){};//do nothing
~strategy(void){};//do nothing
virtual void sense(void)=0;//understand by insight
};
定义应对武大郎状态的策略方法集
class context{
public:
context(strategy* pstrategy);
~context(void);
void sense(void);
private:
strategy* m_pstrategy;
};
武大郎生病策略
class shengbin:public strategy{
public :
shengbin(void);
~shengbin(void);
void sense(void);
};
点击(此处)折叠或打开
- #include "shengbin.h"
- #include <iostream>
- using namespace std;
- shengbin::shengbin(void){
- //do nothing
- }
- shengbin::~shengbin(void){
- //do nothing
- }
- void shengbin::sense(void){
- cout<<"潘金莲:门口挂十字架符号,提示西门庆,武大郎身体病重虚弱,三更来我家幽会"<<endl;
- }
武大郎高兴策略
class gaoxing:public strategy{
public:
gaoxing(void);
~gaoxing(void);
void sense(void);
};
点击(此处)折叠或打开
- #include "gaoxing.h"
- #include <iostream>
- using namespace std;
- gaoxing::gaoxing(void){
- //do nothing
- }
- gaoxing::~gaoxing(void){
- //do nothing
- }
- void gaoxing::sense(void){
- cout<<"潘金莲:门口挂三角符号,提示西门庆,我灌醉他后,三更七里桥幽会"<<endl;
- }
武大郎生气策略
class shengqi:public strategy{
public:
shengqi(void);//生气
~shengqi(void);
void sense(void);
};
点击(此处)折叠或打开
- #include "shengqi.h"
- #include <iostream>
- using namespace std;
- shengqi::shengqi(void){
- //do nothing
- }
- shengqi::~shengqi(void){
- //do nothing
- }
- void shengqi::sense(void){
- cout<<"潘金莲:门口挂五角星,提示西门庆 武大郎生气,他失眠!今晚幽会取消!"<<endl;
- }
以上代码在linux测试通过
[root@localhost Debug]# ./strategy
策略模式演示程序
潘金莲:门口挂三角符号,提示西门庆,我灌醉他后,三更七里桥幽会
潘金莲:门口挂五角星,提示西门庆 武大郎生气,他失眠!今晚幽会取消!
潘金莲:门口挂十字架符号,提示西门庆,武大郎身体病重虚弱,三更来我家幽会
[root@localhost Debug]#