RSS订阅欢迎来到Java程序员学习天地!
你的位置:首页 » Java开发中的23种模式(五)

Java开发中的23种模式(五)

输出:

初始化状态为:egg
修改后的状态为:niu
恢复后的状态为:egg

简单描述下:新建原始类时,value被初始化为egg,后经过修改,将value的值置为niu,最后倒数第二行进行恢复状态,结果成功恢复了。其实我觉得这个模式叫“备份-恢复”模式最形象。

20、状态模式(State)

核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图:


State类是个状态类,Context类可以实现切换,我们来看看代码:

 

[java] view plaincopy

  1. package com.xtfggef.dp.state;  

  2.   

  3. /** 

  4.  * 状态类的核心类 

  5.  * 2012-12-1 

  6.  * @author erqing 

  7.  * 

  8.  */  

  9. public class State {  

  10.       

  11.     private String value;  

  12.       

  13.     public String getValue() {  

  14.         return value;  

  15.     }  

  16.   

  17.     public void setValue(String value) {  

  18.         this.value = value;  

  19.     }  

  20.   

  21.     public void method1(){  

  22.         System.out.println("execute the first opt!");  

  23.     }  

  24.       

  25.     public void method2(){  

  26.         System.out.println("execute the second opt!");  

  27.     }  

  28. }  

[java] view plaincopy

  1. package com.xtfggef.dp.state;  

  2.   

  3. /** 

  4.  * 状态模式的切换类   2012-12-1 

  5.  * @author erqing 

  6.  *  

  7.  */  

  8. public class Context {  

  9.   

  10.     private State state;  

  11.   

  12.     public Context(State state) {  

  13.         this.state = state;  

  14.     }  

  15.   

  16.     public State getState() {  

  17.         return state;  

  18.     }  

  19.   

  20.     public void setState(State state) {  

  21.         this.state = state;  

  22.     }  

  23.   

  24.     public void method() {  

  25.         if (state.getValue().equals("state1")) {  

  26.             state.method1();  

  27.         } else if (state.getValue().equals("state2")) {  

  28.             state.method2();  

  29.         }  

  30.     }  

  31. }  

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

控制面板
您好,欢迎到访网站!
随机文章
热门文章
热评文章
最近发表