1. 程式人生 > >設計模式策略模式

設計模式策略模式

onclick sea func cal sdn 不同的 memory hide http

參考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; }
View Code

設計模式策略模式