欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何看待编程模式 + 观察者模式含义解释

程序员文章站 2022-05-03 12:00:50
...

本来是回帖,但还是发出来吧。这篇帖子是在 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