设计模式策略模式
Posted itdef
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式策略模式相关的知识,希望对你有一定的参考价值。
参考http://blog.csdn.net/calmreason/article/details/51029285
定义一系列相同的算法 根据不同需求选择不同的算法策略
代码
// 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; }
以上是关于设计模式策略模式的主要内容,如果未能解决你的问题,请参考以下文章