Skip to content

命令模式

回到目录

简介

参考链接

状态模式,其实就是状态机的概念,可以参考我之前的状态机blog 链接

TODO 状态模式和策略模式有很大的相同???

UML类图

代码示例

#include <iostream>
#include <string>

class Status
{
public:
    Status() {}
    virtual void ShowStepTip() = 0;
};

class StatusA: public Status
{
public:
    void ShowStepTip() {
        std::cout << "in StatusA, todo..." << std::endl;
    }
};
class StatusB: public Status
{
public:
    void ShowStepTip() {
        std::cout << "in StatusB, todo..." << std::endl;
    }
};

class StatusC: public Status
{
public:
    void ShowStepTip() {
        std::cout << "in StatusC, todo..." << std::endl;
    }
};

class Context
{
public:
    void SetStatus(Status *s) { m_pStatus = s; }
    void ShowCurTip() { m_pStatus->ShowStepTip(); }
private:
    Status *m_pStatus;
};

int main()
{
  Status *statusA = new StatusA();
  Status *statusB = new StatusB();
  Status *statusC = new StatusC();

  Context *context = new Context();
  context->SetStatus(statusA);
  context->ShowCurTip();

  context->SetStatus(statusB);
  context->ShowCurTip();

  context->SetStatus(statusC);
  context->ShowCurTip();

  context->SetStatus(statusB);
  context->ShowCurTip();

  delete context;
  delete statusA;
  delete statusB;
  delete statusC;

  return 0;
}