state模式

作者: 老练子丶2017 | 来源:发表于2017-11-24 19:09 被阅读0次

编译都没过,发生点事,心有点乱

随便看看就好

state.h

#ifndef _STATE_H

#define _STATE_H

#include <iostream>

using namespace std;

class Context

{

public:

Context() {

}

Context(State* state) : _state(state) {

}

~Context() {

}

void OperationInterface() {

_state->OperationInterface(this);

}

void OperationChangeState() {

_state->OperationChangeState(this);

}

private:

friend class State;

bool ChangeState(State* state) {

_state = state;

return true;

}

private:

State* _state;

};

class State

{

public:

State() {

}

virtual ~State() {

}

virtual void OperationInterface(Context *)=0;

virtual void OperationChangeState(Context *)=0;

protected:

bool ChangeState(Context* con,State* st) {

con->ChangeState(st);

return true;

}

};

class ConcreteStateA : public State

{

public:

ConcreteStateA() {

}

virtual ~ConcreteStateA() {

}

virtual void OperationInterface(Context*) {

cout << "ConcreteStateA:OperationInterface" << endl;

}

virtual void OperationChangeState(Context* con) {

OperationInterface(con);

ChangeState(con, new ConcreteStateB());

}

};

class ConcreteStateB : public State

{

public:

ConcreteStateB() {

}

virtual ~ConcreteStateB() {

}

virtual void OperationInterface(Context*) {

cout << "ConcreteStateB:OperationInterface" << endl;

}

virtual void OperationChangeState(Context* con) {

OperationInterface(con);

ChangeState(con, new ConcreteStateA());

}

};

#endif // _STATE_H

state.cpp

#include "state.h"

int main()

{

State* st = new ConcreteStateA();

Context* con = new Context(st);

con->OperationInterface();

con->OperationInterface();

con->OperationInterface();

return 0;

}

相关文章

  • State模式

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

  • state模式

    编译都没过,发生点事,心有点乱 随便看看就好 state.h #ifndef _STATE_H#define _S...

  • State模式

    状态模式这一章感觉没有读得很懂,主要他的定义什么感觉也没有讲得特别清楚,一开始感觉和策略模式有点像,但是后面反而越...

  • Node.js 设计模式笔记 —— State 模式

    State 模式是一种特殊形式的 Strategy 模式:Context 选择的具体策略根据不同的 state 发...

  • 2.设计模式用例(二)

    备忘录模式 2.装饰器模式 外观模式 State Pattern

  • Boolan 第十三周 设计模式(三)

    状态变化模式 典型模式 State Memento 1 state目的是应对对象状态变化,行为也要随之变化,保持对...

  • 敏捷软件开发 - 原则、模式与实践 —— 设计模式(十二)STA

    本文为敏捷软件开发 - 原则、模式与实践系列的一部分。 本文对应原书第29章 STATE模式 STATE模式既具有...

  • State状态模式

    状态模式的核心是将状态抽象为类,然后将状态的改变包含在类中,这样就避免了在client中写出大量的if...els...

  • 状态模式(State)

    结构 模式的组成环境类(Context): 定义客户感兴趣的接口。维护一个ConcreteState子类的实例,...

  • 状态模式(State)

    定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects fo...

网友评论

    本文标题:state模式

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