本来是回帖,但还是发出来吧。这篇帖子是在 CSDN 的 Java 区发出的,地址是:
http://topic.csdn.net/u/20120626/11/14c6301b-7493-437e-ac0e-0eca5f1400e3.html
原帖作者对编程模式中的观察者模式无法理解,以下是我回复的内容。
关于编程模式,我有一点告诫。编程原则(Principle)
是真正应该去理解其发生来源与实际意义的东西。编程模式本身是别的程序员在编程过程中,总结出的一些定式,就像物理公式一样。物理和数学不一样,光应用公式是学不好的,主要还是理解机理,从而可以自己临时开发出各种公式。
对于一个好的程序员来说,平时编程应该多多思考自己程序和编程原则的契合。至于模式,主要应该是顺便总结出来的,就算不总结也不是太严重的事情。只有
偶尔遇到了障碍想不出好的解决方法,或者有时间学习别人的编程经验之时,才接触别人的编程模式,从而产生一些启发或者感想什么的。
我们不应该把编程模式作为学习编程的基准。要有自己随便一想,就能找到经典编程模式在某种条件下不合用之处的自信。
接下来,来解释一下观察者模式
。程序过程都是由某些开端开始的。这种开端可以是用户操作,可以是某一个时间到了于是开
始定时任务,可以是一个不断循环的过程终于满足了什么条件,或者一些传感器来了信号,等等。由这些开端开始,程序一步一步往下执行。在 Java
中就是开端方法中调用了某个别的对象的方法,在调用的方法中又继续调用了方法,以此逐步进行。
观察者模式,是一种调用组织方式的编程模式。其意味着由事件开端,主动去调用下一步该执行的方法。比如你说新产生了一条新闻。那么软件系统咋知道新产
生了一条新闻?很可能是新闻提供商调用了系统的 WebService
接口,传入了一条新的新闻内容对吧?以此为例。那么观察者模式,就是在这个新闻内容传入之后,立刻开始检索数据库,看都有谁订了新闻,然后逐一发送邮件或
者某种形式的通知。
并不是非得这样设计呀。可以将新闻记入数据库。以后订阅者谁执行了“读取新闻”操作,再临时搜索一遍数据库看有没有新闻。你看,这至少就是二种程序执行过程的组织方法。第一种的思路,就和观察者模式的思路是一样的。
可以说,如果一个程序过程,里边要并列地调用好几个对象的方法,而且这些调用是平级不分先后的,那么这种设计其实就已经可以叫做“观察者模式”了。需要在
什么时候使用什么组织方式,应该建立在思考程序效率的基础上。如果硬件条件足够好,那么就变成了“能实现就行”。当然了,作为程序员,我们可能需要自己要
求自己;以后这种要求,会给你的职业生涯带来很多益处。
这份回复也在 CSDN 发表过,地址为: http://blog.csdn.net/shanelooli/article/details/7693234
分享到:
相关推荐
观察者模式最好的诠释 模式编程中的观察者模式delphi代码
KWIC 程序示例 事件风格 观察者模式的程序代码,使用的是Java语言。
观察者模式实例,用到java的继承,多态,加深概念理解.
基于观察者模式和单例模式的java聊天室 面向对象设计,抽象,封装,代理,组合和继承 适合理解java面向对象,socket编程,观察者模式和单例模式
22.3.1 观察者模式在界面色彩主题中的应用 22.3.2 范例小结 第23章 状态模式(State) 23.1 模式解说 23.2 结构与用法 23.2.1 模式结构 23.2.2 代码模板 23.2.3 问题讨论 23.3 范例与实践 23.3.1 状态模式...
观察者模式的实现,使用list实现,C++编程思想还是设计模式都有介绍的,很好的
22.3.1 观察者模式在界面色彩主题中的应用 22.3.2 范例小结 第23章 状态模式(State) 23.1 模式解说 23.2 结构与用法 23.2.1 模式结构 23.2.2 代码模板 23.2.3 问题讨论 23.3 范例与实践 23.3.1 ...
文章介绍设计模式中观察者模式的基本概念,分别讨论了符合观察者模式的VC++文档视图结构以及JAVA web开发中struts架构的体系与编程
本文实例讲述了JavaScript编程设计模式之观察者模式。分享给大家供大家参考,具体如下: 简介 简单的解释观察者模式,就是一个对象(subject)维护一个依赖他的对象(observers)列表,当自身状态发生变化时,自动...
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
主要介绍了C++设计模式编程中的观察者模式使用示例,观察者模式在被观察者和观察者之间建立一个抽象的耦合,需要的朋友可以参考下
主要介绍了Android编程设计模式之观察者模式,结合实例形式详细分析了Android观察者模式的概念、功能、实现方法及相关使用注意事项,需要的朋友可以参考下
个人针对构建者设计模式、回调和观察者设计模式写的一个Demo,方便大家理解编程设计思想,1分算是大家的鼓励分,希望可以给大家带来方便。
主要介绍了Python设计模式编程中观察者模式与策略模式的运用,观察者模式和策略模式都可以归类为结构型的设计模式,需要的朋友可以参考下
主要介绍了Java编程之内置观察者模式,结合实例形式较为详细的分析了java内置观察者模式的原理、实现方法及相关注意事项,需要的朋友可以参考下
主要介绍了Python设计模式编程中的访问者与观察者模式,设计模式的制定有利于团队协作编程代码的协调,需要的朋友可以参考下
观察者12.1 何为观察者模式12.2 何时使用观察者模式12.3 在模型-视图-控制器中使用观察者模式12.4 在Cocoa Touch框架中使用观察者模式12.4.1 通知12.4.2 键-值观察12.5 在TouchPainter中更新CanvasView上的线条12.6 ...
主要介绍了Java编程的Observer观察者设计模式,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象,需要的朋友可以参考下