首页 > 程序开发 > 软件开发 > 其他 >

Java设计模式之行为型模式(状态模式)

2017-02-10

Java设计模式之行为型模式(状态模式):状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

Java设计模式之行为型模式(状态模式):状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

②适用场景

一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。

③结构

State类为状态类,用来存储一些状态信息。 Context类为上下文类,用来存储State。 React类为反应器,根据Context中state属性的变化而作出相对应的反应。

UML图:

这里写图片描述

2、实例

代码已经上了注释,很简单,大家领会一下状态模式的思想。

/**
 * @author Hanlin Wang
 */

public class StateMode {
    public static void main(String[] args) {
        Context.setState(new State("state1"));

        Context.Handler(); 

        Context.setState(new State("state2"));

        Context.Handler();

        //运行结果
        //State 1 mode is running
        //State 2 mode is running
    }
}

//定义状态类
class State{
    private String value;

    public State(String value){
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

//定义上下文类,监视State类的变化
class Context{
    //注入State
    private static State state;

    public static State getState() {
        return state;
    }

    public static void setState(State state) {
        Context.state = state;
    }

    public static void Handler(){
        String value = state.getValue();
        switch (value) {
        case "state1":
            React.monitor();
            break;
        case "state2":
            React.monitor2();
            break;
        default:
            System.out.println("unknown");
            break;
        }
    }
}

//定义事件处理类
class React{
    public static void monitor(){
        System.out.println("State 1 mode is running");
    }
    public static void monitor2(){
        System.out.println("State 2 mode is running");
    }
}
相关文章
最新文章
热点推荐