小A:“怎样去比较状态模式和策略模式?”
大B:“在状态模式中,状态的变迁是由对象的内部条件决定,外界只需关心其接口,不必关心其状态对象的创建和转化;而策略模式里,采取何种策略由外部条件(C)决定。Strategy模式与State模式的结构形式几乎完全一样。但它们的应用场景(目的)却不一样,State模式重在强调对象内部状态的变化改变对象的行为,Strategy模式重在外部对策略的选择,策略的选择由外部条件决定,也就是说算法的动态的切换。但由于它们的结构是如此的相似,可以认为状态模式是完全封装且自修改的策略模式。”
小A:“公认的事实:策略和状态模式是孪生兄弟。”
大B:“就像你所知道的,策略模式通过可互换的算法规则来创建非常成功的业务模式。不管怎么样,状态以非常高尚的方式帮助对象学习通过他们内部的状态来控制他们的行为。他总是无意中告诉他的对象客户,‘跟着我重复就行了,我足够好,我足够聪明……’”