参考于下面的链接:
http://www.jdon.com/designpatterns/designpattern_State.htm
http://blog.csdn.net/qutr/archive/2006/08/01/1007617.aspx
State模式的定义
: 不同的状态,不同的行为;或者说,每个状态有着相应的行为.
何时使用
State模式在实际使用中比较多,适合"状态的切换".
来段代码:
//先来一个状态:
package State;
public abstract class State
{
/** *//** Creates a new instance of State */
public State() {
}
public abstract void opration(Context context);
}//end class State
//在来两个具体的State:
public class ConcreteStateA extends State
{
/** *//** Creates a new instance of ConcreteStateA */
public ConcreteStateA() {
}
public void opration(Context context)
{
System.out.println("The Concrete A");
context.setSate(new ConcreteStateB());
}//end opration()
public static ConcreteStateA getInstance()
{
return new ConcreteStateA();
}//end getInstance()
}
public class ConcreteStateB extends State
{
/** *//** Creates a new instance of ConcreteStateB */
public ConcreteStateB() {
}
public void opration(Context context)
{
System.out.println("The Concrete B");
context.setSate(new ConcreteStateA());
}//end opration()
public static ConcreteStateB getInstance()
{
return new ConcreteStateB();
}//end getInstance()
}//end class ConcreteStateB
//来一个场景:
public class Context
{
private State state;
/** *//** Creates a new instance of Context */
public Context() {
}
public void setSate(State stat)
{
state = stat;
}//end setState()
public void operation()
{
state.opration(this);
}//end operation()
}//end class Context
//怎样调用:
public static void main(String[] args)
{
Context con = new Context();
con.setSate(ConcreteStateA.getInstance());
con.operation();
con.operation();
}//end main()
以上代码摘自上面介绍的blog中,不过有部分改动。下面是UML图 也是盗链的。。。。。
分享到:
相关推荐
C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式
重点在 “内部状态” 的理解,也就是状态改变是由对象内部触发的,而不是外部,所以 外部根本无需关心对象是否用了状态模式,拿数据库连接器的例子来说,不管这个类是用
主要介绍了state状态模式及在C++设计模式编程中的使用实例,在设计模式中策略用来处理算法变化,而状态则是透明地处理状态变化,需要的朋友可以参考下
主要介绍了实例讲解C++设计模式编程中State状态模式的运用场景,文章最后的适用性部分则介绍了一些State模式善于处理的情况,需要的朋友可以参考下
主要介绍了iOS App的设计模式开发中对State状态模式的运用,示例代码为传统的Objective-C,需要的朋友可以参考下
设计模式C++学习之状态模式(State)
State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了. 不只是根据状态,也有根据属性.如果...
状态模式(State) 用意:允许一个对象当状态改变时,改变其行为。
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互
C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式 C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式 C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式 C#面向对象设计...
2009-03-10模式State:一个事件(消息)引起环境或数据的变化,可能导致状态变化,于是处理流程改变,这里的状态是把处理流程分成了很多阶段,通过状态机来根据传来的事件(消息)引发状态转换,管理状态属性和状态行为,...
com.javapatterns.state 状态模式 com.javapatterns.strategy 策略模式 com.javapatterns.templatemethod 模板方法模式 com.javapatterns.uml 统一建模语言UML介绍 com.javapatterns.visitor 访问者模式 ...
4.8 STATE 状态模式 91 4.9 STRATEGY 策略模式 96 4.10 TEMPLATE METHOD模板方法 100 4.11 VISITOR 访问者模式 103 C++高级编程 108 5.1 多态及其实现机制 108 5.2 虚函数和多态性(一) 109 5.3 虚函数和多态性(二) ...
C++设计模式课件18_State_状态模式.pdf
http://blog.csdn.net/feiyinzilgd/archive/2011/04/05/6302717.aspx (C++ State 设计模式博客)演示源代码。用C++实现并较详细的讲述了Sate模式的意图和工作状态。
NULL 博文链接:https://wy649898543.iteye.com/blog/1434590