看了<<Java与模式>>里讲的两者的区别,还是不太明白,望达人指教。

解决方案 »

  1.   

    The way to teach clients to use composition and delegation is different:
    Strategy gives its instantiate object a strategy that implements some behavior.
    State changes state according to some well [defined] state transactions.
      

  2.   

    (转自《JAVA设计模式》)
    状态模式经常与策略模式相混淆。有时候很难区分应当使用状态模式还是应当使用策略模式。
         这个时候,一个简单的方法便是考察环境角色是否有明显的状态和状态的过渡,如果环境角色只有一个状态,那么就应当使用策略模式。策略模式的特点是:一旦环境角色选择了一个具体策略类,那么整个环境类的生命周期里它都不会改变这个具体策略类。而状态模式则适用于另一种情况,即环境角色有明显的状态转移。在环境类的生命周期里,会有几个不同的状态对象被使用。
         另一个微妙的区别在于,策略模式的环境类自己选择一个具体策略类;而状态模式的环境类被外在的原因放进一个具体状态类中。
         策略模式所选的策略往往并不明显的告诉客户端它所选择的具体策略;而状态模式则相反,在状态模式里,环境角色所出的状态是明显告诉客户端的。