#include <iostream>
using namespace std; class Strategy;
class Context {
public:
Context(Strategy* pStrategy);
virtual ~Context();
virtual void algorithm();
private:
Strategy* m_pStrategy;
};
class Strategy {
public:
Strategy() {}
virtual ~Strategy() {}
virtual void algorithm() = 0;
};
class ConcreteStrategyA : public Strategy {
public:
ConcreteStrategyA() {}
virtual ~ConcreteStrategyA() {}
virtual void algorithm();
};
class ConcreteStrategyB : public Strategy {
public:
ConcreteStrategyB() {}
virtual ~ConcreteStrategyB() {}
virtual void algorithm();
}; // Context
Context::Context(Strategy* pStrategy) {
m_pStrategy = pStrategy;
}
Context::~Context() {
if (!m_pStrategy) delete m_pStrategy;
}
void Context::algorithm() {
m_pStrategy->algorithm();
} // ConcreteStrategyA
void ConcreteStrategyA::algorithm() {
cout << "I'm ConcreteStrategyA's algorithm" << endl;
} // ConcreteStrategyB
void ConcreteStrategyB::algorithm() {
cout << "I'm ConcreteStrategyB's algorithm" << endl;
} int main() {
Strategy* pStrategy = new ConcreteStrategyA();
Context* pContext = new Context(pStrategy);
(*pContext).algorithm(); pStrategy = new ConcreteStrategyB();
pContext = new Context(pStrategy);
(*pContext).algorithm();
return 0;
}

最新文章

  1. 在Vi里面实现字符串的批量替换
  2. MySQL使用二进制日志恢复数据库
  3. shenben语录
  4. PowerDesigner 15.1 安装步骤详细图解及破解
  5. SQL语句基础知识
  6. HTTP基础:URL格式、 HTTP请求、响应、消息
  7. 有向图的欧拉路径POJ2337
  8. 矩形嵌套(LIS)
  9. 快速傅里叶变换(FFT)算法【详解】
  10. 停止预览时调用Camera.release(), 出现Method called after release()异常问题原因及解决办法
  11. 浅论Python密文输入密码的方法
  12. rpc接口调用以太坊智能合约
  13. 【用户权限】MongoDB用户权限
  14. stark组件的分页,模糊查询,批量删除
  15. 创建dblink
  16. [Big Data - Codis] Codis集群的搭建与使用
  17. windows media player 官方修复工具下载及修复方法
  18. WebStorm新创建项目介绍
  19. Android App解决卡顿慢之内存抖动及内存泄漏(发现和定位)
  20. 【android】 adb logcat命令查看并过滤android输出log

热门文章

  1. 用asp.net core结合fastdfs打造分布式文件存储系统
  2. centos7下端口映射
  3. Display a QMessageBox from a QThread
  4. Spring Boot devtool的使用
  5. dlopen failed: empty/missing DT_HASH in "libx.so" (built with --hash-style=gnu?)
  6. 在sun jdk 8镜像基础上构建maven 3的docker镜像
  7. CentOS 7 网络优化(升级内核、开启 BBR)
  8. codeforce 1311 D. Three Integers
  9. linux下编译boost的多线程程序
  10. 【Python】Django2.0集成Celery4.1详解