设计模式(六)策略模式Strategy
来源:互联网 发布:网络机顶盒怎么安装图 编辑:程序博客网 时间:2024/06/01 19:38
意图:定义一个系列算法,把他们一个个封装起来,并且使它们可互相替换。使得算法可以独立于使用它的客户。
传统C++方法实现:
#include <memory>#include <iostream>using namespace std;class Strategy{public:virtual void doAlgorithm(void)=0;virtual ~Strategy(){}protected:};class StrategyA : public Strategy{public:void doAlgorithm(void){cout<<"StrategyA::doAlgorithm()"<<endl;}};class StrategyB : public Strategy{public:void doAlgorithm(void){cout<<"StrategyB::doAlgorithm()"<<endl;}};class UseStrategy{public:UseStrategy(shared_ptr<Strategy> ps):ps_(ps){}void useAlgorithm(void){shared_ptr<Strategy> ps = this->ps_.lock();ps->doAlgorithm();}private:weak_ptr<Strategy> ps_;};int main(int, char *[]){shared_ptr<Strategy> ps = make_shared<StrategyA>();UseStrategy user(ps);user.useAlgorithm();//新增了一个算法ps = make_shared<StrategyB>();UseStrategy user1(ps);user1.useAlgorithm();};
输出:
StrategyA::doAlgorithm()StrategyB::doAlgorithm()
请按任意键继续. . .
现代C++实现,参考std::function
0 0
- 设计模式(六)策略模式Strategy
- 设计模式----Strategy(策略)
- 设计模式--Strategy(策略)
- Strategy(策略)设计模式
- 设计模式----策略模式(Strategy)
- 设计模式--策略模式(Strategy)
- 设计模式C++(Strategy策略模式)
- 设计模式---策略模式(strategy)
- java 设计模式--策略模式(strategy)
- 【设计模式】之策略模式(Strategy)
- 设计模式之--策略模式(Strategy)
- 设计模式C++(Strategy策略模式)
- 设计模式(一)Strategy - 策略模式
- 设计模式之策略(strategy)模式
- 设计模式之策略模式(Strategy)
- 设计模式5--策略模式(Strategy)
- 设计模式-----策略模式(strategy)
- 浅学设计模式--策略(Strategy)模式
- Android测试框架之Robolectric
- 网络开发:在Socket中发送大文件
- Linux 批量修改服务器密码
- 四元数(Quaternion)和旋转
- 计算机网络知识点总结
- 设计模式(六)策略模式Strategy
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- CodeForces 18E Flag 2 (dp)
- Why I can’t convert my Windows Server 2012 R2 Core to GUI
- idea编译时报java.lang.OutOfMemoryError: Java heap space异常
- 平衡树之AVL树旋转
- S5PV210串行通信接口详解2
- mybatis报org.apache.ibatis.reflection.ReflectionException: Error instantiating null with invalid type
- 流水灯实验