7、中介者模式
定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
迪米特法则的典型应用。
理解:联合国与各个国家,联合国就是中介,将各个国家连接起来,使其耦合性降低。
区别:
外观模式:对一个对象子系统进行抽象,从而提供了一个为方便的接口,是单向的
中介者模式:协议是多向的,
8、迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
包括:容器和迭代器角色(来遍历聚合对象)
理解:公交车上面的售票员,公交车就是一个容器,售票员就是遍历对象的迭代者
9、解释器模式
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。
理解:它用于定义一组文法规则并通过这组文法规则来解释语言中的句子。
10、命令模式
定义:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
理解:命令就好比菜谱,服务员只是来登记顾客点的什么菜,然后通知厨师去做
区别:封装的角度不同重点内容
都是某个对象发出消息,然后由中间对象通知观察者去做什么
观察者模式:封装的是要执行操作的对象
命令模式:将各个操作(命令)封装成类,然后告知某个对象该做什么
11、职责链模式
定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
理解:职责链模式通过建立一条链来组织请求的处理者,请求将沿着链进行传递,请求发送者无须知道请求在何时、何处以及如何被处理,实现了请求发送者与处理者的解耦。
责任链模式其实就是一个灵活版的if…else…语句,它就是将这些判定条件的语句放到了各个处理类中。
联系:
跟状态模式一样,将复杂的逻辑判断,转移到各个子类然后由子类来进行简单判断。
区别:
状态模式是让各个状态对象自己知道其下一个处理的对象是谁,即在编译时便设定好了的;而职责链模式中的各个对象并不指定其下一个处理的对象到底是谁,只有在客户端才设定。
大话设计源代码:
http://download.csdn.net/detail/tgbyn/9855078