码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-05-15 18:36:15      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:观察者模式   依赖倒转原则   

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

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

    没有用观察者模式时

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

bubuko.com,布布扣

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

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

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

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

    用了观察者模式后:

bubuko.com,布布扣

bubuko.com,布布扣

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

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


观察者模式与依赖倒转原则,布布扣,bubuko.com

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

标签:观察者模式   依赖倒转原则   

原文地址:http://blog.csdn.net/u010924834/article/details/25893857

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!