JAVA设计模式十二:--State(状态模式)

点击打开转载处链接
状态模式(State Pattern)是设计模式的一种,属于行为模式。

  定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
  状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态
的一系列类中,可以把复杂的判断逻辑简化。
意图:
允许一个对象在其内部状态改变时改变它的行为
适用场景:
  1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。

  2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。

如图:


举例说明:

[java]  view plain copy print ?
  1. package design.state;  
  2. /** 
  3.  * 文件名称:design.state.Step.java 
  4.  * 创建人:Fei Wong 
  5.  * 创建时间: 2012-06-21 
  6.  * 电子邮箱:feiwong8@126.com 
  7.  * 说明:枚举,说明有几个状态 
  8.  * */  
  9. public enum Step {  
  10.     /** 
  11.      * 模拟审核的状态, 未审核  审核中  通过审核  未通过审核 
  12.      * */  
  13.     UNAUDITED , AUDIT , PASS , NOT_PASS  
  14. }   
  15.   
  16.   
  17.   
  18.   
  19. package design.state;  
  20.   
  21. /** 
  22.  * 文件名称:design.state.Examine.java  
  23.  * 创建人:Fei Wong  
  24.  * 创建时间: 2012-06-21 
  25.  * 电子邮箱:feiwong8@126.com  
  26.  * 说明:判断逻辑 
  27.  */  
  28. public class Examine {  
  29.     private Step step;  
  30.   
  31.     public Examine() {  
  32.         step = Step.UNAUDITED ;   
  33.     }  
  34.   
  35.     public void push(int status) {  
  36.         switch (status) {  
  37.         case 1:  
  38.             if(step == Step.UNAUDITED){  
  39.                 step = Step.AUDIT ;  
  40.             }else if(step == Step.AUDIT ){  
  41.                 step = Step.PASS ;  
  42.             }else if(step == Step.NOT_PASS){  
  43.                 System.out.println( "审核已经被否决" );  
  44.             }else if(step == Step.PASS){  
  45.                 System.out.println( "审核已经通过" );  
  46.             }  
  47.             break ;  
  48.         case 0:   
  49.             step = Step.NOT_PASS ;   
  50.             break ;  
  51.         }  
  52.     }  
  53. }  
  54.   
  55.   
  56.   
  57.   
  58.   
  59. package design.state;  
  60.   
  61.   
  62. /** 
  63.  * 文件名称:design.state.Main.java 
  64.  * 创建人:Fei Wong 
  65.  * 创建时间: 2012-06-21 
  66.  * 电子邮箱:feiwong8@126.com 
  67.  * 说明:测试方法 
  68.  * */  
  69. public class Main {  
  70.   
  71.     /** 
  72.      * @param args 
  73.      */  
  74.     public static void main(String[] args) {  
  75.         Examine examine = new Examine() ;  
  76.         examine.push( 1 ) ;  
  77.         examine.push( 0 ) ;  
  78.         examine.push( 1 ) ;   
  79.     }  
  80.       
  81. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值