设计模式学习(十七) 状态模式

场景:

  -- 酒店系统中,房间的状态变化:   空闲 -- >已预定 -- > 已入住

核心:

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

结构:

  -- Context环境类

    环境类中维护一个State对象,他是定义了当前的状态

  -- State抽象状态类

  -- 每一个类封装了一个状态对应的行为

 

代码实现:

package state;

public class HomeContext {
    
    private State state;
    
    public void setState(State s){
        System.out.println("修改状态:");    
        state  = s;
        state.handle();
    }
}
环境状态类

 

package state;

public interface State {
    
    public void handle();
}
State

 

package state;

public class FreeState implements State {

    @Override
    public void handle() {
        System.out.println("...房间为空闲状态....");
        
    }


}
空闲状态

 

package state;

public class BookedState implements State {

    @Override
    public void handle() {
        System.out.println("房间已预定状态");
        
    }


}
预定状态

 

package state;

public class CheckedState implements State {

    @Override
    public void handle() {
        System.out.println("房间已入住状态,请勿打扰");
        
    }


}
入住状态

 

package state;

public class Client {
    public static void main(String[] args){
        HomeContext hct = new HomeContext();
        State sf = new FreeState();
        hct.setState(sf);
        State sc = new CheckedState();
        hct.setState(sc);
    }
}
客户端

 

  

posted @ 2015-04-21 17:45  李_鹏  阅读(146)  评论(0编辑  收藏  举报