C++编程模式2--策略模式
来源:互联网 发布:初中校园网络文化活动 编辑:程序博客网 时间:2024/06/02 03:51
本博参考了这篇博客 http://www.cnblogs.com/wanggary/archive/2011/04/07/2008796.html ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
使用策略的类(CUseStrategy)
抽象策略类(CAbsStrategy)
策略类1(CStrategy1)
策略类2(CStrategy2)
策略类3(CStrategy3)
。。。
这些类之间的关系是:
1、所有的策略类由(使用策略的类UseStrategy)调用。
2、所有的策略类继承自(抽象策略类AbsStrategy)。
3、抽象策略类的对象,作为使用策略类的对象成员。
//UseStrategy.h 文件//使用策略的类#pragma once#include "AbsStrategy.h"//包含抽象策略类的头文件class CUseStrategy{public: CUseStrategy(IStrategy *pStrategy); ~CUseStrategy(void); void Operate(void);private: CAbsStrategy*m_pStrategy;};
//UseStrategy.cpp#include "StdAfx.h"#include "UseStrategy.h"CUseStrategy::CUseStrategy(CAbsStrategy*pStrategy){ this->m_pStrategy = pStrategy;}CUseStrategy::~CUseStrategy(void){ delete this->m_pStrategy;}void CUseStrategy::Operate(void){ this->m_pStrategy->Operate();}
//AbsStrategy.h #pragma once//抽象策略类文件Class CAbstrategy{Public: CAbstrategy(); virtual~CAbstrategy(); virtual void operate()=0;//纯虚函数。};
//Strategy1.h文件//策略1#pragma once#include "Abstrategy.h"class CStrategy1 :public CAbstraegy{public: CStrategy1(); ~CStrategy1(); void operate();};
//Strategy1.cpp文件#include "StdAfx.h"#include "Strategy1.h"#include <iostream>using std::cout;using std::endl;Strategy1::Strategy1(void){}Strategy1::~Strategy1(void){}void Strategy1::operate(void){ cout << "这是策略1!" << endl;}
//Strategy2.h文件//策略1#pragma once#include "Abstrategy.h"class CStrategy2 :public CAbstraegy{public: CStrategy2(); ~CStrategy2(); void operate();};
//Strategy2.cpp文件#include "StdAfx.h"#include "Strategy2.h"#include <iostream>using std::cout;using std::endl;Strategy2::Strategy2(void){}Strategy2::~Strategy2(void){}void Strategy2::operate(void){ cout << "这是策略2!" << endl;}
//Strategy3.h文件//策略3#pragma once#include "Abstrategy.h"class CStrategy3 :public CAbstraegy{public: CStrategy3(); ~CStrategy3(); void operate();};
//Strategy3.cpp文件#include "StdAfx.h"#include "Strategy3.h"#include <iostream>using std::cout;using std::endl;Strategy3::Strategy3(void){}Strategy3::~Strategy3(void){}void Strategy3::operate(void){ cout << "这是策略3!" << endl;}
==========================================================
见证奇迹的时刻
=========================================================
#include"UseStrategy.h"#include "Abstrategy.h"#include "Strategy1.h"#include "Strategy2.h"#include "Strategy3.h"int main(){ CUseStrategy*pUseStrategy; //使用第一个策略 pUseStrategy=new(new CStrategy1()); pUseStrategy->operate(); delete pUseStrategy; //使用第二个策略 pUseStrategy=new(new CStrategy2()); pUseStrategy->operate(); delete pUseStrategy; //使用第三个策略 pUseStrategy=new(new CStrategy3()); pUseStrategy->operate(); delete pUseStrategy;}
0 0
- C++编程模式2--策略模式
- 编程-策略模式
- 策略模式(c++)
- 策略模式(C语言版)
- 【C++】Chapter2:策略模式
- Objective C--策略模式
- Objective C 策略模式
- Objective C--策略模式
- 策略模式(c++)
- object-c 策略模式
- 编程艺术之策略模式
- Delphi模式编程之策略模式(上)
- Delphi模式编程之策略模式(下)
- 编程设计模式—策略模式
- 【编程素质】设计模式-策略模式
- 设计模式C++(Strategy策略模式)
- 设计模式C++(Strategy策略模式)
- C语言设计模式:策略模式
- 学会正则表达式让你的编程如虎添翼
- Jquery——Day5(jQuery UI:知乎系统[初级])
- redis.conf常用配置
- 容器的capacity、max_size以及内存分配
- 谈HttpClient(3.1版本)与HttpURLConnection
- C++编程模式2--策略模式
- Wireshark实战分析之DHCP协议
- jsp环境搭建
- Redis的缓存策略和主键失效机制
- CodeForces Gym 100500A A. Poetry Challenge DFS
- 引入公共html页面的几种方法
- 知道这20个正则表达式,能让你少写1,000行代码
- C++ 中 switch case语句 处理字符串
- 远程会话已断开连接,因为访问被拒绝导致许可证存储的创建失败。请使用提升的权限运行远程桌面客户端