代码实现
public interface State { void handle(); }
/** * 空闲状态 * @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(); } }
public class Client { public static void main(String[] args) { Context ctx = new Context(); ctx.setState(new FreeState()); ctx.setState(new BookedState()); } }