来源:http://www.bjsxt.com/
一、【GOF23设计模式】_状态模式、UML状态图、酒店系统房间状态、线程对象状态切换
1 package com.test.state; 2 3 public interface State { 4 void handle(); 5 }
1 package com.test.state; 2 /** 3 * 空闲状态 4 */ 5 public class FreeState implements State{ 6 7 @Override 8 public void handle() { 9 System.out.println("房间空闲!没人住!"); 10 } 11 }
1 package com.test.state; 2 /** 3 * 已预订状态 4 */ 5 public class BookedState implements State{ 6 7 @Override 8 public void handle() { 9 System.out.println("房间已预订!别人不能定!"); 10 } 11 }
1 package com.test.state; 2 /** 3 * 已入住状态 4 */ 5 public class CheckedInState implements State{ 6 7 @Override 8 public void handle() { 9 System.out.println("房间已入住!别人不能入住!"); 10 } 11 }
1 package com.test.state; 2 /** 3 * 房间对象 4 */ 5 public class HomeContext { 6 //如果是银行系统,这个Context类就是账号。根据金额不同,切换不同的状态! 7 8 private State state; 9 10 public void setState(State s){ 11 System.out.println("修改状态!"); 12 state = s; 13 state.handle(); 14 } 15 }
1 package com.test.state; 2 3 public class Client { 4 public static void main(String[] args) { 5 HomeContext ctx = new HomeContext(); 6 7 ctx.setState(new FreeState()); 8 9 ctx.setState(new BookedState()); 10 } 11 }
控制台输出:
修改状态!
房间空闲!没人住!
修改状态!
房间已预订!别人不能定!