美文网首页
设计模式-行为模式-策略模式

设计模式-行为模式-策略模式

作者: 阿棍儿_Leon | 来源:发表于2020-04-30 13:46 被阅读0次

策略模式与状态模式看起来差不多,只是从概念上侧重不同。策略模式封装的是策略或算法,状态模式封装的是状态,主要区别在于封装对象的不同形式。

以下代码定义了两种算法策略类。

#include <iostream>

using namespace std;

class Strategy
{
public:
    virtual ~Strategy(){}
    virtual void AlgorithmInterface() = 0;
};

class ConcreteStrategyA:public Strategy
{
public:
    void AlgorithmInterface()
    {
        cout<<__PRETTY_FUNCTION__<<endl;
    }
};
class ConcreteStrategyB:public Strategy
{
public:
    void AlgorithmInterface()
    {
        cout<<__PRETTY_FUNCTION__<<endl;
    }
};

以下代码实现了策略的使用者类。

class Context
{
private:
    Strategy* m_pStrategy;
public:
    Context(Strategy* strategy):m_pStrategy(strategy){}
    void SetStrategy(Strategy* strategy)
    {
        m_pStrategy = strategy;
    }
    void ContextInterface()
    {
        m_pStrategy->AlgorithmInterface();
    }
};

以下代码演示了策略模式,通过对context对象切换策略,切换了其同一接口的算法实现。

int main(void){
    Strategy* strategyA = new ConcreteStrategyA();
    Strategy* strategyB = new ConcreteStrategyB();
    Context context(strategyA);
    context.ContextInterface();
    context.SetStrategy(strategyB);
    context.ContextInterface();
    delete strategyA;
    delete strategyB;
    return 0;
}

输出

virtual void ConcreteStrategyA::AlgorithmInterface()
virtual void ConcreteStrategyB::AlgorithmInterface()

相关文章

  • 设计模式[13]-策略模式-Strategy Pattern

    1.策略模式简介 策略模式(Strategy Patter)是行为型(Behavioral)设计模式,策略模式封装...

  • iOS 设计模式-策略模式

    1.策略模式简介   策略模式(Strategy Pattern),是行为型模式之一(设计模式分类:https:/...

  • 23.策略模式(行为型)

    策略模式(行为型) 原书链接设计模式(刘伟) 适应算法灵活性而产生的设计模式——策略模式。 一、相关概述 1). ...

  • 设计模式-状态模式

    介绍 状态模式和策略模式是一对双胞胎,他们都属于行为设计模式。状态模式和策略模式都是为具有多种可能情形设计的模式,...

  • 设计模式-策略模式

    设计模式-策略模式 策略模式 策略模式-对象行为型模式 :定义了一系列算法,并且将算法分别封装,它们之间可以相互替...

  • 策略模式

    本文参考自: 《JAVA设计模式》之策略模式(Strategy) 1. 作用 策略模式属于对象的行为模式。其用意是...

  • spring框架中的设计模式二

    在这篇文章中,介绍4种设计模式。结构型设计模式:代理和复合模式。行为型设计模式:策略和模板方法模式。 代理模式 面...

  • 设计模式整理(7) 状态模式

    学习《Android 源码设计模式解析与实践》系列笔记 介绍 状态模式和策略模式都是行为型模式。状态模式中的行为是...

  • Android设计模式——策略模式(十一大行为型)

    1.策略模式介绍 策略模式(Strategy Pattern),是十一大行为型设计模式之一。 在开...

  • 论策略模式

    策略模式的定义 策略模式的定义:(引用百度百科的对策略模式的简介) 策略模式作为一种软件设计模式,指对象有某个行为...

网友评论

      本文标题:设计模式-行为模式-策略模式

      本文链接:https://www.haomeiwen.com/subject/qdszwhtx.html