观察者模式(Observer):定义了对象间的一种一对多的依赖关系,让多个观察者同时监某一个主题对象,当一个对象的状态发生变化是,所有依赖与它的对象都得到通知并被自动更新。它所做的工作其实就是在解除耦合,让耦合的双方都依赖于抽象,而不是依赖于具体,从而使得各自的变化都不会影响另一边的变化。
命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;可以对请求排队或记录请求日志,以及支持可撤销的操作。
在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者或者被请求的操作者是什么,我们只需要在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。例如灯作为接收者,开关作为发送者,那么他们之间的命令就是靠电线传递的。
状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的状态的一系列类当中,可以把复杂的判断逻辑简单化。其好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。
职责链模式(Chain ofResponsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
这个模式使得接收者和发送者都没有对方的明确信息,且链中的对象自己也不知道链的结构。结果是职责链可简化对象的相互连接,它们仅需要保持一个指向其后继者的引用,而不需保持它所有的候选接收者的引用。并可以随时增加或修改处理一个请求结构,增强了给对象指派职责的灵活性。