设计模式策略模式
参考http://blog.csdn.net/calmreason/article/details/51029285
定义一系列相同的算法 根据不同需求选择不同的算法策略
使用 bind function 见 设计模式 策略模式2 c++11
代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// 004.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <memory> #include <iostream> using namespace std; class Strategy { public: virtual void doAlgorithm(void) = 0; virtual ~Strategy(){} protected: }; class StrategyA :public Strategy { void doAlgorithm(void) { std::cout << __FUNCTION__ << std::endl; } }; class StrategyB :public Strategy { void doAlgorithm(void) { std::cout << __FUNCTION__ << std::endl; } }; class UseStrategy { public: UseStrategy(std::shared_ptr<Strategy> ps) :ps_(ps) {} void useAlgorithm(void) { std::shared_ptr<Strategy> ps = this->ps_.lock(); ps->doAlgorithm(); } private: std::weak_ptr<Strategy> ps_; }; int main() { std::shared_ptr<Strategy> ps = std::make_shared<StrategyA>(); UseStrategy user(ps); user.useAlgorithm(); ps = std::make_shared<StrategyB>(); UseStrategy user1(ps); user1.useAlgorithm(); return 0; }
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
![阿里打赏](https://files.cnblogs.com/files/itdef/ali2.bmp)
![微信打赏](https://files.cnblogs.com/files/itdef/weixin2.bmp)