设计模式之策略模式

     话说在代理模式下,在王婆的邪恶帮助下,潘金莲与西门庆已经取得了初步的认识,通过代理(媒婆王婆)西门庆初步取得了成功,已近开始接近潘金莲骚妇。可是要想进一步发展关系可不能光天华日之下来来往往,于是乎通过王婆此媒人将他们之间的联络暗号初步定好了。
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);
};

点击(此处)折叠或打开

  1. #include "shengbin.h"

  2. #include <iostream>
  3. using namespace std;

  4. shengbin::shengbin(void){
  5.     //do nothing

  6. }

  7. shengbin::~shengbin(void){
  8.     //do nothing

  9. }

  10. void shengbin::sense(void){

  11.     cout<<"潘金莲:门口挂十字架符号,提示西门庆,武大郎身体病重虚弱,三更来我家幽会"<<endl;

  12. }

武大郎高兴策略
class gaoxing:public strategy{
public:
gaoxing(void);
~gaoxing(void);
void sense(void);
};

点击(此处)折叠或打开

  1. #include "gaoxing.h"
  2. #include <iostream>
  3. using namespace std;

  4. gaoxing::gaoxing(void){
  5.     //do nothing

  6. }

  7. gaoxing::~gaoxing(void){
  8.     //do nothing

  9. }

  10. void gaoxing::sense(void){

  11.     cout<<"潘金莲:门口挂三角符号,提示西门庆,我灌醉他后,三更七里桥幽会"<<endl;

  12. }

武大郎生气策略
class shengqi:public strategy{
public:
shengqi(void);//生气
~shengqi(void);
void sense(void);
};

点击(此处)折叠或打开

  1. #include "shengqi.h"
  2. #include <iostream>
  3. using namespace std;

  4. shengqi::shengqi(void){
  5.     //do nothing
  6. }
  7. shengqi::~shengqi(void){
  8.     //do nothing
  9. }

  10. void shengqi::sense(void){
  11.     cout<<"潘金莲:门口挂五角星,提示西门庆 武大郎生气,他失眠!今晚幽会取消!"<<endl;
  12. }

以上代码在linux测试通过
[root@localhost Debug]# ./strategy 
 策略模式演示程序 
潘金莲:门口挂三角符号,提示西门庆,我灌醉他后,三更七里桥幽会
潘金莲:门口挂五角星,提示西门庆 武大郎生气,他失眠!今晚幽会取消!
潘金莲:门口挂十字架符号,提示西门庆,武大郎身体病重虚弱,三更来我家幽会
[root@localhost Debug]# 





<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(442) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

lubing5212012-11-26 17:10:17

#include "strategy.h"
#include "context.h"
#include "shengqi.h"
#include "gaoxing.h"
#include "shengbin.h"

#include <iostream>
using namespace std;

int main(int argc,char *argv[]){

        context *pcontext;
        cout<<" 策略模式演示程序 "<<endl;
        pcontext=new conte

评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值