设计模式C++实现笔记

STATE 状态模式 (行为模式)

2019-03-07  本文已影响0人  lixin_karl

介绍

允许对象在内部状态改变时,改变它的行为

参与者

State 状态基类
ConcreteState 具体状态
Context 用户使用环境

实现代码

#include <iostream>

class State{//State 状态基类
public:
    virtual void Work() = 0;
};

class DayState:public State{//ConcreteState 具体状态
public:
    void Work() override
    {
        std::cout<<"白天就该工作啊!"<<std::endl;
    }
};

class NightState:public State{//ConcreteState 具体状态
public:
    void Work() override
    {
        std::cout<<"晚上就该加班啊!"<<std::endl;
    }
};

class Company {//Context 用户使用环境
public:
    void Run()
    {
        state->Work();
    }
    void SetState(State *state1)
    {
        state = state1;
    }
private:
    State *state;
};

int main()
{
    State *night = new NightState();
    State *day = new DayState();
    Company company;
    company.SetState(day);
    company.Run();
    company.SetState(night);
    company.Run();
}

输出结果

白天就该工作啊!
晚上就该加班啊!

特点

参考

上一篇 下一篇

猜你喜欢

热点阅读