设计模式学习(十七) 状态模式
场景:
-- 酒店系统中,房间的状态变化: 空闲 -- >已预定 -- > 已入住
核心:
-- 用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题
结构:
-- 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(); }
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); } }