最好有源码说明,谢谢

解决方案 »

  1.   

    我理解的是
    状态模式是允许对象可根据其状态改变自身的行为.比如同一行为,在不同状态的时候所提供的实现不同.例如abstract class 员工张三{
      public void 干活();
    }class 在职 extends 员工张三{
      public void 开发(){
         print("哦,知道了.");
      }
    }
    class 离职 extends 员工张三{
      public void 开发(){
         print("去死,老子不干了!");
      }
    }
    class 经理{
     print 员工张三 张三; public vlid 来项目了(){
       张三.开发();
     } public void 设置张三(员工张三 张三){
        this.张三 = 张三;
     }
    }
    以上为个人理解.
    如有错误,望高手指点!
      

  2.   

    刚复习了一下状态模式.
    状态模式与策略模式的区别有2
    1.考察环境角色是否有明显的状态和状态的过渡.
    2.策略模式的环境类是自己选择一个具体的策略类.而状态模式的环境类是被外在原因放进一个具体的状态中.我想通过这个方法说明这点的. public void 设置张三(员工张三 张三){
        this.张三 = 张三;
     }
    呵呵.大家一起讨论讨论~共同进步:)
      

  3.   


    abstract class 员工张三{
      public void 干活();
    }class 在职 extends 员工张三{
      public void 开发(){
         print("哦,知道了.");
      }
    }
    在职没有实现员工张三的抽象方法吧,手误?
    应该把干活改成开发
      

  4.   

    状态模式有两个关键因素:状态和行为
    状态可以触发行为,行为可以导致状态的改变传统的开发方式是使用if else switch等逻辑语句控制的。。这样必然导致系统的复杂性了。。如下就是利用oo的思想来控制行为和状态即使用了状态模式