32.行为类模式大PK
行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。
- 命令模式和策略模式的类图确实很类似,只是命令模式多了一个接收者Receiver角色。它们虽然同为行为类模式,但是两者的区别还是很明显的。策略模式的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务,即其意图是让这些算法独立,并且可以互相替换,让行为的变化独立于拥有行为的客户;而命令模式是对动作的解耦,把一个动作的执行分为执行对象(接收者角色)、执行行为(命令角色),让两者相互独立而不受影响。
- 状态模式和策略模式都是通过Context类封装一个具体的行为,都提供了一个封装的方法,是高扩展性的设计模式。两者的区别如下:策略模式封装的是不同的算法,算法之间没有交互,以达到算法可以自由切换的目的;而状态模式封装的是不同的状态,以达到状态切换行为随之发生改变的目的。