美文网首页
状态模式

状态模式

作者: Davisxy | 来源:发表于2019-05-07 11:57 被阅读0次

    核心

    • 用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题

    结构:

    • Context环境类
      • 环境类中维护一个State对象,他是定义了当前的状态。
    • State抽象状态类
    • ConcreteState具体状态类
      • 每一个类封装了一个状态对应的行为

    小栗子

    package com.principle.state;
    
    public interface State {
        void handle();
    
    }
    
    package com.principle.state;
    
    public class FreeState implements State{
    
        @Override
        public void handle() {
            System.out.println("空闲状态,没人居住!!!");
        }
    
    }
    
    package com.principle.state;
    
    public class BookedState implements State{
    
        @Override
        public void handle() {
            System.out.println("房间已预订,别人不能定!");
        }
    
    }
    
    package com.principle.state;
    
    public class CheckedState implements State{
    
        @Override
        public void handle() {
            System.out.println("房间已入住,请勿打扰!");
        }
    
    }
    
    package com.principle.state;
    
    /**
     * 维持不同状态的切换
     * @author xy
     *
     */
    public class Context {
        public State state;
    
        public void setState(State state) {
            System.out.println("修改状态!");
            this.state = state;
            state.handle();
        }
        
        
    }
    
    package com.principle.state;
    
    public class Client {
        public static void main(String[] args) {
            Context context=new Context();
            context.setState(new FreeState());
            context.setState(new BookedState());
        }
    }
    
    结果打印:
    修改状态!
    空闲状态,没人居住!!!
    修改状态!
    房间已预订,别人不能定!
    

    类图

    状态模式.png

    相关文章

      网友评论

          本文标题:状态模式

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