java状态模式详解,【设计模式】之状态模式详解

Java设计模式之状态模式

一、 状态模式

状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。

二、 状态模式的实现

首先创建一个state接口定义一个操作,然后创建一些实现了state接口具体状态类(concrete state classes)。Context类持有State的引用。StaePatternDemo 将具体展现状态模式的应用。

类之间的继承关系:

9d1770a3f7197c8330ece3dd2d76c434.png

步骤一:创建一个state接口

package study_02.designpattern.state;

public interface State {

public void doAction(Context context);

}

步骤二:创建Context类

package study_02.designpattern.state;

public class Context {

private State state;

public Context(){

state = null;

}

public void setState(State state){

this.state = state;

}

public State getState(){

return state;

}

}

步骤三:创建实现了state接口的具体的类

package study_02.designpattern.state;

public class StartState implements State {

public void doAction(Context context) {

System.out.println("Player is in start state");

context.setState(this);

}

public String toString(){

return "Start State";

}

}

package study_02.designpattern.state;

public class StopState implements State {

public void doAction(Context context) {

System.out.println("Player is in stop state");

context.setState(this);

}

public String toString(){

return "Stop State";

}

}

步骤四:具体应用场景

package study_02.designpattern.state;

public class StatePatternDemo {

public static void main(String[] args) {

Context context = new Context();

StartState startState = new StartState();

startState.doAction(context);

System.out.println(context.getState().toString());

StopState stopState = new StopState();

stopState.doAction(context);

System.out.println(context.getState().toString());

}

}

步骤五:输出结果

Player is in start state

Start State

Player is in stop state

Stop State

三、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值