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) 详解

状态模式(state pattern) 详解本文地址: http://blog.csdn.net/caroline_wendy状态模式(state pattern): 允许对象在内部状态改变时改变它的...
  • u012515223
  • u012515223
  • 2014年07月11日 17:42
  • 2145

"围观"设计模式(21)--行为型之状态模式(State Pattern)

状态模式--允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。----百度百科 个人理解 状态模式应该说可以理解为某种状态下,程序的执行流程可能会发生变化,类...
  • wangyang1354
  • wangyang1354
  • 2016年06月13日 15:11
  • 3456

JAVA设计模式之 状态模式【State Pattern】

一、概述     当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状...
  • l416112167
  • l416112167
  • 2014年11月12日 23:48
  • 2702

Java设计模式——状态模式(STATE PATTERN)

场景一 描述:现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城...
  • u012401711
  • u012401711
  • 2016年09月26日 23:45
  • 3090

状态模式----State Pattern

状态模式
  • huaishu
  • huaishu
  • 2017年07月31日 15:44
  • 94

设计模式 —— 状态模式(State Pattern)

状态模式(State Pattern) 概念:状态模式 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 在软件设计中,我们经常会遇需要编写有很多状态的程序。最简单的如乘坐电梯程...
  • wwh578867817
  • wwh578867817
  • 2016年06月01日 01:08
  • 3481

【设计模式】状态模式(State Pattern)

状态模式 在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 ...
  • MR_XuZhe
  • MR_XuZhe
  • 2017年11月29日 11:21
  • 55

状态模式(State Design Pattern)

以此回顾《设计模式之禅》及其他设计模式书籍、视频中的状态模式。 什么是状态模式? Allow an object to alter its behavior when its internal s...
  • Liukx940818
  • Liukx940818
  • 2016年05月15日 16:21
  • 477

设计模式-状态模式(State Pattern)

状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 此模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,我们知道行为会随着内部状态而改变。 状态模式和策略模式...
  • MidnightIII
  • MidnightIII
  • 2011年03月26日 14:56
  • 199

The State Pattern 状态模式

A little known fact: the Strategy and State Patterns were twins separated at birth. As you know, the...
  • EVIL1992
  • EVIL1992
  • 2014年04月04日 14:22
  • 997
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:State Pattern 状态模式
举报原因:
原因补充:

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