标签(空格分隔): 观察者模式 中介者模式 发布订阅
观察者模式:又叫做发布-订阅模式,定义了一种一对多的依赖关系,让多个观察者对象,同时监听一个主题对象,这个主题对象在状态发生变化时,会通知所有的观察者对象,是它们能够自动执行对应的操作。
观察者模式主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。
当一个系统一方面依赖另一方面的时候,这个时候使用观察者模式就可以将这两者各自独立的改变和复用,而且被依赖方也不需要知道到底由多少对象依赖自己。自己仅仅需要改变自己即可。
优点: 观察者和被观察者之间是互相独立的,被观察者(被依赖者)的变动不需要关心依赖者
中介者模式:封装对象间的交互,使得对象之间不必显示的引用,从而可以独立的改变他们之间的交互
中介者模式主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。中介者模式将对象和对象之间的互相依赖转移到自己身上,变为对象和自己相互依赖,将一依赖的结构类型由网状型转化为星型,将自己变成一个核心。(git to svn)
当一个系统一方面依赖另一方面的时候,这个时候使用观察者模式就可以将这两者各自独立的改变和复用,而且被依赖方也不需要知道到底由多少对象依赖自己。自己仅仅需要改变自己即可。
优点: 1、降低了类的复杂度,将类之间的互相依赖转移到中介者身上。2、降低各个类中的耦合度。
以上两个方法都是依据根据迪米特原则来降低类之间的相互耦合的问题。将类之间的相互依赖关系转移到第三方身上,将自己脱离出来,增加自己的灵活性。