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

行为模式4-策略模式

作者: sunblog | 来源:发表于2018-04-16 23:21 被阅读0次

行为模式4-策略模式

策略模式Strategy

意图

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式是的算法可独立于使用它的客户而变化。

问题思考

考虑跨平台文本编辑器。windows下换行是\r\n,unix是\n。这只是格式化算法的一部分。如果直接把格式化硬编码到程序中(if else),将使程序变得更加复杂。比如,我们想增加\r这种换行的时候。

适用性

  • 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
  • 需要使用一个算法的不同变体。例如:权衡时间/空间的算法,一个侧重时间,一个侧重空间。
  • 一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。

类图

strategy

实现

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

class Context {
public:
    explicit Context(Strategy *strategy) { mStrategy = strategy; }

    void ContextInterface() {
        mStrategy->AlgorithmInterface();
    }

private:
    Strategy *mStrategy = nullptr;
};

class ConcreteStrategy1 : public Strategy {
public:
    void AlgorithmInterface() override {
        std::cout << "format 1" << std::endl;
        // some other thing
    }

};

class ConcreteStrategy2 : public Strategy {
public:
    void AlgorithmInterface() override {
        std::cout << "format 2" << std::endl;
        // some other thing
    }

};

注意:接口应该根据需求而改变。比如需不需要知道Context的信息。如果需要知道context的信息,ConcreteStrategy就需要一个Context成员变量。

相关文章

  • 行为模式4-策略模式

    行为模式4-策略模式 策略模式Strategy 意图 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换...

  • 【常用设计模式】观察者-模板-策略-责任链-适配器-代理-装饰器

    ==目录== 1-行为型-6个1-观察者模式2-模板模式3-策略模式4-责任链模式5-状态模式6-命令模式 2-结...

  • java 策略模式

    策略模式1.策略模式简介策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具...

  • 行为型模式:策略模式

    LieBrother原文:行为型模式:策略模式 十一大行为型模式之五:策略模式。 简介 姓名 :策略模式 英文名 ...

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

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

  • 策略模式

    策略模式是行为型模式的一种,同时属于行为模式的还有:命令模式,观察者模式,状态模式和之前写的中介者模式。 策略模式...

  • iOS 设计模式-策略模式

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

  • 策略模式

    一 简介 1.定义 策略模式属于对象的行为模式.策略模式能在运行时改变软件的算法行为.如何实现策略模式根据情况而...

  • 设计模式-策略模式

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

  • 策略模式

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

网友评论

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

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