美文网首页
状态模式

状态模式

作者: 最美时光在路上 | 来源:发表于2016-10-28 23:34 被阅读0次
    1. 状态角色抽象类
    public abstract class AbstractState {
        protected Context context;
        public void setContext(Context context) {
            this.context = context;
        }
        public abstract void handle1();
        public abstract void handle2();
    }
    
    1. 状态角色抽象类实现类
    public  class ConcreteState1  extends AbstractState{
        @Override
        public void handle1() {
            //本状态逻辑处理
        }
        @Override
        public void handle2() {
            super.context.setCurrentState(Context.STATE2);
            super.context.handle2();
        }
    }
    public class ConcreteState2 extends AbstractState {
        @Override
        public void handle1() {
            super.context.setCurrentState(Context.STATE1);
            super.context.handle1();
        }
        @Override
        public void handle2() {
            //本状态逻辑处理
        }
    }
    
    1. 状态环境角色
    public class Context {
        public static final AbstractState STATE1= new ConcreteState1();
        public static final AbstractState STATE2= new ConcreteState2();
        //当前状态角色
        private AbstractState currentState;
        public AbstractState getCurrentState() {
            return currentState;
        }
        public void setCurrentState(AbstractState currentState) {
            this.currentState = currentState;
            //切换状态
            this.currentState.setContext(this);
        }
        //切换状态方法
        public void handle1(){
            this.currentState.handle1();
        }
        public void handle2(){
            this.currentState.handle2();
        }
    }
    
    1. 场景使用
        Context context = new Context();
        AbstractState state1 =new ConcreteState1();
        state1.setContext(context);
    

    相关文章

      网友评论

          本文标题:状态模式

          本文链接:https://www.haomeiwen.com/subject/uzgeuttx.html