设计模式[5]-State

简介:

Type: Behavioral

State模式:允许一个对象在其内部状态改变的时候改变其行为。


#include <iostream>
using namespace std;
class State;


class Context
{
public:
    Context(State* pState): mState(pState){};
    void request();
    void setState(State* pState);
private:
    State *mState;
};


class State
{
public:
    virtual void handle(Context* pContext) = 0;
};


class ConcreteState1: public State
{
public:
    void handle(Context* pContext);
};


class ConcreteState2: public State
{
public:
    void handle(Context *pContext);
};


void Context:: request()
{
    mState->handle(this);
}
void Context:: setState(State* pState){
    delete(this->mState);
    this->mState = pState;
}


void ConcreteState1::handle(Context *pContext)
{
    cout<<"Handled by ConcreteState1"<<endl;        
    pContext->setState(new ConcreteState2());
}


void ConcreteState2::handle(Context *pContext)
{
    cout<<"Handled by ConcreteState2"<<endl;        
    pContext->setState(new ConcreteState1());
}


int main()
{
    Context *pContext = new Context(new ConcreteState1);
    pContext->request();
    pContext->request();
    pContext->request();


    delete(pContext);
    system("pause");
    return 0;
}

目录
相关文章
|
3月前
|
设计模式 程序员
设计模式-状态模式(State)
设计模式-状态模式(State)
49 0
|
10月前
|
设计模式
设计模式~状态模式(state)-23
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的context对象。 目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: 代码
47 1
|
10月前
|
设计模式
设计模式19 - 状态模式【State Pattern】
设计模式19 - 状态模式【State Pattern】
31 0
|
10月前
|
设计模式 Java 开发者
【设计模式——学习笔记】23种设计模式——状态模式State(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——状态模式State(原理讲解+应用场景介绍+案例介绍+Java代码实现)
67 0
|
设计模式 Java uml
Java中23种面试常考的设计模式之状态模式(State)---行为型模式
Java中23种面试常考的设计模式之状态模式(State)---行为型模式
89 1
|
设计模式
从零开始学设计模式(十八):状态模式(State Pattern)
状态模式(State Pattern)指的是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化,在其内部状态改变时改变它的行为。状态模式是一种对象行为型模式。它和策略模式有一点很像,就是将一些复杂的逻辑放在一个专门的上下文类中进行处理。
1097 0
从零开始学设计模式(十八):状态模式(State Pattern)
|
设计模式 Java
Java设计模式-状态模式(State)
Java设计模式-状态模式(State)
|
设计模式 Java 编译器
设计模式学习(五):State状态模式
在面向对象编程中,是用类表示对象的。也就是说,程序的设计者需要考虑用类来表示什么东西。类对应的东西可能存在于真实世界中,也可能不存在于真实世界中。
130 0
设计模式学习(五):State状态模式
|
设计模式
设计模式实战-状态模式(State Pattern)(中)
设计模式实战-状态模式(State Pattern)(中)
126 0
设计模式实战-状态模式(State Pattern)(中)
|
设计模式 Java
【愚公系列】2021年12月 二十三种设计模式(二十)-状态模式(State Pattern)
【愚公系列】2021年12月 二十三种设计模式(二十)-状态模式(State Pattern)
107 0
【愚公系列】2021年12月 二十三种设计模式(二十)-状态模式(State Pattern)