设计模式——状态模式

182 阅读1分钟

最新修改已更新到github

状态模式_用类来表示状态,允许一个对象在其内部状态改变时改变它的行为

/**
 * @author maikec
 * @date 2019/5/16
 */
public abstract class AbstractState {
    @Getter
    @Setter
    protected String name;

//    public AbstractState(String name){
//        this.name = name;
//    }
    /**
     * 获取状态信息
     */
    public abstract void getStateInfo();
}

/**
 * @author maikec
 * @date 2019/5/16
 */
public class Context {
    protected AbstractState state;
    public void setState(AbstractState state){
        this.state = state;
    }

    /**
     * 报告当前是什么状态
     */
    public void whatState(){
        state.getStateInfo();
    }
}

/**
 * @author maikec
 * @date 2019/5/16
 */
public class DownState extends AbstractState {
    public DownState(String name) {
        super.name = name;
    }

    @Override
    public void getStateInfo() {
        System.out.println( "So down:"+getName() );
    }
}

/**
 * @author maikec
 * @date 2019/5/16
 */
public class HighState extends AbstractState {
    public HighState(String name){
        super.name = name;
    }
    @Override
    public void getStateInfo() {
        System.out.println( "So High:"+getName() );
    }
}

/**
 * @author maikec
 * @date 2019/5/16
 */
public class StateDemo {
    public static void main(String[] args) {
        AbstractState downState = new DownState( "Down Down" );

        final Context context = new Context();
        context.setState( downState );
        context.whatState();

        AbstractState highState = new HighState( "High High" );

        context.setState( highState );
        context.whatState();

    }
}

附录

github.com/maikec/patt… 个人GitHub设计模式案例

声明

引用该文档请注明出处