zoukankan      html  css  js  c++  java
  • 设计模式策略模式

    参考http://blog.csdn.net/calmreason/article/details/51029285

    定义一系列相同的算法 根据不同需求选择不同的算法策略

    使用 bind  function 见 设计模式 策略模式2 c++11

    代码

    // 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
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    难道真的是RedBook错了?
    用一个土办法证明RedBook的错误
    Md5 Loader Demo
    simple shadow mapping
    又遇到让人疑惑的问题
    [洛谷P1037][题解]产生数
    [洛谷P1279][题解]字串距离
    [洛谷P1122][题解]最大子树和
    [洛谷P1144][题解]最短路计数
    Vue 之 Data
  • 原文地址:https://www.cnblogs.com/itdef/p/7456887.html
Copyright © 2011-2022 走看看