zoukankan      html  css  js  c++  java
  • 设计模式之状态模式 State

    代码实现

    public interface  State {
    
        void handle();
    }
    State 接口
    /**
     * 空闲状态
     * @author bzhx
     * 2017年3月15日
     */
    public class FreeState implements State{
    
        @Override
        public void handle() {
            System.out.println("房价空闲,没人住");
        }    
    }
    
    
    
    /**
     * 已入住状态
     * @author bzhx
     * 2017年3月15日
     */
    public class CheckedInState implements State{
    
        @Override
        public void handle() {
            System.out.println("房价已入住");
        }    
    }
    
    
    
    /**
     * 预订状态
     * @author bzhx
     * 2017年3月15日
     */
    public class BookedState implements State{
    
        @Override
        public void handle() {
            System.out.println("房价已预订");
        }    
    }
    不同状态的实现
    /**
     * 状态切换
     * @author bzhx
     * 2017年3月15日
     */
    public class Context {
        //如果是银行系统,根据金额不同,切换不同的状态
        private State state;
        public void setState(State s){
            System.out.println("修改状态");
            state  = s;
            state.handle();
        }
    }
    Context环境类
    public class Client {
    
        public static void main(String[] args) {
            Context ctx = new Context();
            ctx.setState(new FreeState());
            ctx.setState(new BookedState());
        }
    
    }
    测试
  • 相关阅读:
    青蛙的约会
    租用游艇问题
    宾馆房间
    [USACO10FEB]购买巧克力Chocolate Buying
    骑士的工作
    Power Strings
    [HAOI2006]聪明的猴子
    骑马修栅栏 Riding the Fences
    [USACO06JAN]牛的舞会The Cow Prom
    UVA 11294 wedding 2-sat
  • 原文地址:https://www.cnblogs.com/qingdaofu/p/7478168.html
Copyright © 2011-2022 走看看