观察者模式与依赖倒转原则

前端之家收集整理的这篇文章主要介绍了观察者模式与依赖倒转原则前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

观察者模式是对依赖倒转原则很好的应用。单纯去看依赖倒转原则,我并不明白。什么“抽象不能依赖细节,细节要依赖抽象的”。看完观察者模式后,我觉得这一原则还是很经典,很实用的。

下面就利用《大话设计模式》中,举的前台和看股票的观察者模式的例子,来说一下我对这一原则的理解。

没有用观察者模式时

具体的通知者(Secretary)和具体的观察者(StockObserver)二者是相互依赖的。


Secretary类中的Attach(StockObserver observer)方法需要知道StockObserver,而StockObserver也需要知道Secretary的状态SecretaryAction。

通知者角度看(通知者依赖观察者),那么它本身是高层模块,具体的观察者是低层模块,高层模块依赖低层模块。

从观察者角度看(观察者依赖通知者),那么它本身是高层模块,具体的通知者是低层模块,高层模块依赖低层模块。

这样的坏处是如果具体的观察者发生变化,那么我们需要修改Attach方法,如果通知者发生变化,我们需要修改观察者所依赖的通知者的状态。

用了观察者模式后:



具体的观察者或者是通知者都依赖于更高层次的抽象类。(Observer是具体观察者的抽象,Subject是具体通知者的抽象)即“高层模块不应该依赖低层模块,两个都应该依赖抽象”。

这样的好处是,具体观察者和通知者想怎么变就怎么变,通过增加相应的子类即可,而不是修改现有的类。而他们各自的抽象类不会变,从这里也能看出“变是永远不变的”。

原文链接:https://www.f2er.com/javaschema/285584.html

猜你在找的设计模式相关文章