美文网首页
c++状态模式

c++状态模式

作者: 一路向后 | 来源:发表于2021-02-17 21:12 被阅读0次

1.状态模式简介

   允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类,(State Pattern)是设计模式的一种,属于行为模式。

2.源码实现

#include <iostream>

using namespace std;

class Context;

class State
{
public:
    virtual void Handle(Context *p) = 0;
};

class ConcreteStateA : public State
{
public:
    virtual void Handle(Context *pContext)
    {
        cout << "I am concrete state A" << endl;
    }
};

class ConcreteStateB : public State
{
public:
    virtual void Handle(Context *pContext)
    {
        cout << "I am concrete state B" << endl;
    }
};

class Context
{
public:
    Context(State *pState) : m_pState(pState){};

    void Request()
    {
        if(m_pState)
        {
            m_pState->Handle(this);
        }
    }

    void ChangeState(State *pState)
    {
        m_pState = pState;
    }

private:
    State *m_pState;
};

int main(int argc, char **argv)
{
    State *pStateA = new ConcreteStateA();
    State *pStateB = new ConcreteStateB();
    Context *pContext = new Context(pStateA);

    pContext->Request();
    pContext->ChangeState(pStateB);
    pContext->Request();

    delete pContext;
    delete pStateA;
    delete pStateB;

    return 0;
}

3.编译源码

$ g++ -o example example.cpp

4.运行及其结果

$ ./example
I am concrete state A
I am concrete state B

相关文章

  • 状态模式C++

    状态模型,就是当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一...

  • c++状态模式

    1.状态模式简介    允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类,(State Pa...

  • 【C++设计模式】 状态模式

  • C++设计模式-第三篇 (Boolan)

    C++设计模式-第三篇 (Boolan) 本章内容:1 备忘录模式2 状态模式3 组合模式4 迭代器模式5 职责模...

  • C++ 设计模式 —— 20.状态模式

    状态模式:一种行为型设计模式 应用场景:状态模式主要应用于对象有很多状态,每种状态下有不同的表现,而且在程序运行过...

  • C++常用设计模式

    C++常用设计模式。

  • (Boolan)C++设计模式 <十> ——状态模式

    “状态变化”模式 在组建构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的...

  • 信息来源[持续更新]

    News, Status & Discussion about Standard C++关于C++标准的新闻、状态...

  • C++ 中的设计模式

    对于任何一种语言都有自己的设计模式,C++也不例外,详情请见:C++ 中的各种设计模式

  • State模式

    状态模式(State模式) 定义 状态模式,又称状态对象模式(Pattern of Objects for S...

网友评论

      本文标题:c++状态模式

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