设计模式之:状态(State)模式

[java]  view plain  copy
 print ?
  1. /** 
  2.  * @author stone 
  3.  */  
  4. public class WindowState {  
  5.     private String stateValue;  
  6.       
  7.     public WindowState(String stateValue) {  
  8.         this.stateValue = stateValue;  
  9.     }  
  10.       
  11.     public String getStateValue() {  
  12.         return stateValue;  
  13.     }  
  14.   
  15.     public void setStateValue(String stateValue) {  
  16.         this.stateValue = stateValue;  
  17.     }  
  18.       
  19.     public void handle() {  
  20.         /* 
  21.          * 根据不同状态做不同操作, 再切换状态 
  22.          */  
  23.         if ("窗口".equals(stateValue)) {  
  24.             switchWindow();  
  25.             this.stateValue = "全屏";  
  26.         } else if ("全屏".equals(stateValue)) {  
  27.             switchFullscreen();  
  28.             this.stateValue = "窗口";  
  29.         }  
  30.     }  
  31.       
  32.     private void switchWindow() {  
  33.         System.out.println("切换为窗口状态");  
  34.     }  
  35.       
  36.     private void switchFullscreen() {  
  37.         System.out.println("切换为全屏状态");  
  38.     }  
  39.       
  40. }  

[java]  view plain  copy
 print ?
  1. /** 
  2.  * 状态的使用 
  3.  * @author stone 
  4.  * 
  5.  */  
  6. public class WindowContext {  
  7.     private WindowState state;  
  8.       
  9.     public WindowContext(WindowState state) {  
  10.         this.state  = state;  
  11.     }  
  12.       
  13.     public WindowState getState() {  
  14.         return state;  
  15.     }  
  16.       
  17.     public void setState(WindowState state) {  
  18.         this.state = state;  
  19.     }  
  20.       
  21.     public void switchState() {  
  22.         this.state.handle();  
  23.     }  
  24. }  

[java]  view plain  copy
 print ?
  1. /* 
  2.  * 状态(State)模式 行为型模式 
  3.  * 既改变对象的状态,又改变对象的行为 
  4.  * 根据状态,改变行为 
  5.  */  
  6. public class Test {  
  7.     public static void main(String[] args) {  
  8.         /* 
  9.          * 本例的 状态值只有两个,由状态类自身控制 
  10.          * 也可以把状态值的控制,交由客户端来设置 
  11.          */  
  12.         WindowContext context = new WindowContext(new WindowState("窗口"));  
  13.         context.switchState();  
  14.         context.switchState();  
  15.         context.switchState();  
  16.         context.switchState();  
  17.   
  18.     }  
  19. }  

打印

[plain]  view plain  copy
 print ?
  1. 切换为窗口状态  
  2. 切换为全屏状态  
  3. 切换为窗口状态  
  4. 切换为全屏状态  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值