设计模式策略模式

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

 

以上是关于设计模式策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Redis实现分布式锁(设计模式应用实战)

设计模式策略模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式