状态接口:
package state_mode; /** * 状态接口 */ public interface State { /** * 处理业务 */ public void handle(); }
空闲状态:
package state_mode; /** * 空闲状态 */ public class FreeState implements State{ /** * 空闲状态业务处理 */ @Override public void handle() { System.out.println("房间空闲!!!没人住!"); } }
已预定状态:
package state_mode; /** * 已预定状态 */ public class BookedState implements State{ /** * 已预定状态业务处理 */ @Override public void handle() { System.out.println("房间已预定!别人不能定!"); } }
已入住状态:
package state_mode; /** * 已入住状态 */ public class CheckedInState implements State{ /** * 已入住状态业务处理 */ @Override public void handle() { System.out.println("房间已入住!请勿打扰!"); } }
房间对象:
package state_mode; /** * 房间对象(房间上下文) * 状态模式核心类 */ public class HomeContext { //如果是银行系统, 这个Context类就是账号. 根据金额不同, 切换不同的状态! /** * 当前的状态 */ private State state; /** * 设置状态 * 并执行该状态所对应的行为 */ public void setState(State state) { System.out.println("修改状态!"); this.state = state; this.state.handle(); } }
测试类:
package state_mode; public class Client { public static void main(String[] args) { //创建房间对象 HomeContext ctx = new HomeContext(); //设置房间对象当前的状态, 并处理相应的业务 ctx.setState(new FreeState()); ctx.setState(new BookedState()); } }
打印结果:
修改状态! 房间空闲!!!没人住! 修改状态! 房间已预定!别人不能定!
谢谢声明出处!
转自: http://www.cnblogs.com/gscq073240/articles/7102918.html

浙公网安备 33010602011771号