State Pattern 状态模式

原创 2015年07月07日 12:42:11

State Pattern: allows an object to alter its behavior when its internal state changes. The object will appear to changes its class.

Encapsulate state into separate classes. With the State Pattern, we have a set of behaviors encapsulated int state objects; at any time the context is delegating to one of those states. State Pattern allows a Context to change its behavior as the state of the Context changes.

状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。

定义State接口:

public interface State {
	public void responseAction1();
	public void responseAction2();
}
定义具体State:

public class StateA implements State {
	Context context;
	
	public StateA(Context context) {
		this.context = context;
	}
	
	@Override
	public void responseAction1() {
		context.currentState = context.stateB;
		// do something
	}

	@Override
	public void responseAction2() {
		// TODO Auto-generated method stub
	}
}

public class StateB implements State {
	Context context;
	
	public StateB(Context context) {
		this.context = context;
	}
	
	@Override
	public void responseAction1() {
		// TODO Auto-generated method stub
	}

	@Override
	public void responseAction2() {
		// TODO Auto-generated method stub
	}
}
定义Context:

public class Context {
	State stateA;
	State stateB;
	State currentState = stateA;
	
	public Context() {
		stateA = new StateA(this);
		stateB = new StateB(this);
	}
	
	public void responseAction1() {
		currentState.responseAction1();
	}
	
	public void responseAction2() {
		currentState.responseAction2();
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

状态模式(State Pattern)

原文地址:http://www.iteye.com/topic/503075 状态(State Pattern)模式:又称为状态对象模式,状态模式是对象的行为模式 状态模式允许一个对象在其内部状态...

State Pattern状态模式(三)

状态模式允许对象在内部状态改变时,改变它的行为。P410类图 #include using std::cout; using std::endl; //***************...
  • yaked
  • yaked
  • 2015-07-02 20:43
  • 337

状态模式(State Pattern)

状态模式(State Pattern): 当一个对象的内在状态变化时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件过于复杂时的情况。把状态的判断逻...

状态模式在领域驱动设计中的使用(Using the State pattern in a Domain Driven Design)

领域驱动设计是软件开发的一种方式,问题复杂的地方通过将具体实现和一个不断改进的核心业务概念的模型连接解决。这个概念是Eric Evans提出的,http://www.domaindrivendesig...

状态模式【State Pattern】

现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城市可以纵向延伸...

状态模式【State Pattern】

现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城市可以纵向延伸...

状态模式(State Pattern)

State模式的定义: 不同的状态,不同的行为;或者说,每个状态有着相应的行为. 何时使用? State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else ...

状态模式(State Pattern)

模式动机: 1、在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的 (stateful)对象,这样的对象状态是从事先定义好的一系列值中取出...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)