c++设计模式--策略模式
来源:互联网 发布:源码加密php 编辑:程序博客网 时间:2024/06/05 06:00
// StrategyPattern.cpp : 定义控制台应用程序的入口点。
//通过此例程了解设计模式里的:“策略模式”
//策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,
//而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
//下面采用《大话设计模式》里的赵云拆锦囊的例子解释这一模式
//《三国演义》里赵云陪刘备去关东娶亲,临行时诸葛亮给了赵云三个锦囊
//为防不测,命令赵云在危机时刻一一打开这三个锦囊
//锦囊1:刚到吴国拆开 策略:找乔国老帮忙,让吴国太给孙权施加压力
//锦囊2:刘备乐不思蜀时拆开 策略:求吴国太开个绿灯,放行
//锦囊3:关东派兵追赶时拆开 策略:孙夫人断后,挡住追兵
//在这个情节里,赵云负责拆开锦囊,策略都放在锦囊里
#include "stdafx.h"#include <process.h>#include <iostream>using namespace std;//策略基类,提供接口class CStrategy{public: CStrategy() { } virtual ~CStrategy() { }public: virtual void Opreate()=0;};//策略一:找乔国老帮忙,让吴国太给孙权施加压力class CBackDoor:public CStrategy{public: CBackDoor() { } ~CBackDoor() { }public: void Opreate() { cout<<"找乔国老帮忙,让吴国太给孙权施加压力"<<endl; }};//策略二:求吴国太开个绿灯,放行class COpenGreenLight:public CStrategy{public: COpenGreenLight() { } ~COpenGreenLight() { }public: void Opreate() { cout<<"求吴国太开个绿灯,放行"<<endl; }};//策略三:孙夫人断后,挡住追兵class CBlockEnemy:public CStrategy{public: CBlockEnemy() { } ~CBlockEnemy() { }public: void Opreate() { cout<<"孙夫人断后,挡住追兵"<<endl; }};//锦囊类class CContext{public: CContext(CStrategy *pStrategy) { this->m_pStrategy=pStrategy; } ~CContext() { delete this->m_pStrategy; } void Opreate() { this->m_pStrategy->Opreate(); }private: CStrategy *m_pStrategy;}; int _tmain(int argc, _TCHAR* argv[]){ cout<<"---------策略模式测试案例-----------"<<endl<<endl; cout<<"------------赵云到了关东,拆开第一个锦囊..----------------"<<endl; CContext *pContext=new CContext(new CBackDoor()); pContext->Opreate(); delete pContext; pContext=NULL; cout<<endl; cout<<"------------赵云发现主公不想回家了,决定拆开第二个锦囊..----------------"<<endl; pContext=new CContext(new COpenGreenLight()); pContext->Opreate(); delete pContext; pContext=NULL; cout<<endl; cout<<"--------------赵云发现孙权那孙子在后面追赶,立刻拆开第三个锦囊..--------------"<<endl; pContext=new CContext(new CBlockEnemy()); pContext->Opreate(); delete pContext; pContext=NULL; system("pause"); return 0;}
- 设计模式C++(Strategy策略模式)
- 设计模式C++(Strategy策略模式)
- C语言设计模式:策略模式
- C语言设计模式之策略模式
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- 设计模式-----策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- 设计模式- 策略模式
- 设计模式- 策略模式
- android菜单三级树实现
- 创新工场笔试题
- 求最长上升子序列的长度
- Android小项目之四 自动更新检查的逻辑
- 海量数据处理,转自android小猪
- c++设计模式--策略模式
- Lync 2010升级到Lync 2013 之Lync 2010 架构扩展准备!
- 开发日记(一)
- 我的第一篇博文
- 06-相对布局和绝对布局
- 我或将离开技术的世界, 踏上新的旅程
- centos安装LAMP
- .mysqladmin: Can't turn off logging; error: 'Access denied; you need the SUPER privilege for this op
- 八月的日子