状态模式(state)
状态模式的核心:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。
应用场景:当需要频繁的修改状态时,考虑使用状态模式。
状态模式的结构:
1.Context环境类:环境类中维护一个State对象,它是定义了当前的状态;
2.State抽象状态类;
3.ConcreteState具体状态类:每一个类封装了一个状态对应的行为。
下面用代码来说明:
创建State接口与不同的State实现类:
package com.note.pattern.state; public interface State { void handle(); }
package com.note.pattern.state; public class BookedState implements State{ @Override public void handle() { System.out.println("房间已预订!别人不能定!"); } }
package com.note.pattern.state; public class CheckedInState implements State{ @Override public void handle() { System.out.println("房间已入住!请勿打扰!"); } }
package com.note.pattern.state; public class FreeState implements State{ @Override public void handle() { System.out.println("房间空闲!!!没人住!"); } }
创建Context类:
package com.note.pattern.state; public class Context { private State state; public void setState(State s) { System.out.println("修改状态!"); state = s; state.handle(); } }
客户端测试:
package com.note.pattern.state; public class Client { public static void main(String[] args) { Context ctx = new Context(); ctx.setState(new FreeState()); ctx.setState(new BookedState()); } }