描述一个类在运行时的状态变化;Strategy模式则是把一个算法当作一个对象,达到在运行时自由替换算法的目的。他们在结构上的不同在于State模 式通常有一个Context的引用(例如在我的State模式中,Context就是TrafficLight,但我在这个例子里没包含这个引用,因为例 子太简单而没必要),在适当的时候State对象可以回调这个Context的引用,而Strategy没有这个引用。
我们现在使用Strategy模式来模拟我们在编程时的出错提示。试想:我们的程序在出错的时候,可能想把错误的原因提示给 用户看,但是有时候我们又想把错误记录在LOG里,用户不用关心,这对于错误提示来说就是两种算法。
下面看看模拟的代码:



































































最后再说一下,Strategy和State模式的架构基本相同,他们的核心思想也就是用了委托技术。
事实上,设计模式也就是巧妙的使用面向对象的各种特性来组合对象间的关系的,这些特性包括:
组合、多态、封装、继承、委托等。
所以搞明白面向对象的这些特性,就是设计模式的基础!