设计模式2--strategy(策略模式)

strategy(策略模式)

策略模式主要应对的问题:

  • 业务算法多变
  • 许多类仅仅是行为不同
  • 多个条件判断,并且条件个数有可能随着业务增加

结构图:


strategy.png

代码:

策略接口类:

  • 对策略接口进行定义
//策略接口
class strategyInterface
{
public:
    virtual void dealWay()=0;
};

具体策略

  • 对具体策略进行实现
//具体策略的实现1
class strategyOne : public strategyInterface
{
public:
    virtual void dealWay() {
        cout<<"策略1"<<endl;
    }
};

具体策略

  • 对具体策略进行实现
//具体策略的实现2
class strategyTwo : public strategyInterface
{
public:
    virtual void dealWay() {
        cout<<"策略2"<<endl;
    }
};

//使用策略的对象,拥有一个多态的策略指针,调用不同的策略

//策略使用者
class useStrategy
{
protected:
    strategyInterface* strategy;
public:
    //此处使用工厂模式更加好  
    useStrategy(strategyInterface* _strategy):strategy(_strategy)
    {

    }
    void test()
    {
        strategy->dealWay();
    }
};

test

#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
    useStrategy* us = new useStrategy(new strategyOne());
    us->test();
    useStrategy* us1 = new useStrategy(new strategyTwo());
    us1->test();
    return 0;
}

测试.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 场景问题# 1.1 报价管理## 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的...
    七寸知架构阅读 5,236评论 9 62
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 4,062评论 1 15
  • 1 场景问题 1.1 报价管理 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要...
    4e70992f13e7阅读 3,206评论 2 16
  • 今天第一次写美乐家日志,虽然经营有两个月了,但是因为不想让自己太累,也因为自己的心理关还没迈过去,休息了一个月。 ...
    七七妈咪阅读 315评论 0 0
  • 分手三个月了。 每天千方百计看关于你的一切消息,微博的点点滴滴,我一直持续看着,感受着。 想知道你现在相亲有着落了...
    巨宝的城阅读 357评论 0 0

友情链接更多精彩内容