状态模式(State Pattern)
Posted yvhqbat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了状态模式(State Pattern)相关的知识,希望对你有一定的参考价值。
1. 状态模式定义
意图
状态模式: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
适用性
一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。
一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常, 有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化。
类图:
2. 实例
//测试
public class StatePatternTest
public static void main(String[] args)
State state=new State();
Context context=new Context(state);
state.setValue("state 1");
context.method();
state.setValue("state 2");
context.method();
state.setValue("state 3");
context.method();
//状态类
class State
private String value;
public String getValue()
return value;
public void setValue(String value)
this.value=value;
public void method1()
System.out.println("execute the first opt");
public void method2()
System.out.println("execute the second opt");
//根据状态的不同,采用不同的措施
class Context
private State state=null;
public Context(State state)
this.state=state;
public void setState(State state)
this.state=state;
public State getState()
return state;
public void method()
if(state.getValue().equals("state 1"))
state.method1();
else if(state.getValue().equals("state 2"))
state.method2();
else
System.out.println("error state");
运行结果:
execute the first opt
execute the second opt
error state
以上是关于状态模式(State Pattern)的主要内容,如果未能解决你的问题,请参考以下文章