本来是回帖,但还是发出来吧。这篇帖子是在 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
分享到:
相关推荐
本项目"Hibernate+Struts2+观察者+工厂模式实例项目"就是一个典型的Java Web开发案例,它巧妙地结合了ORM框架Hibernate、MVC框架Struts2以及设计模式中的观察者模式和工厂模式,旨在提供一种高效、易于扩展的解决...
在《设计模式实现——观察者模式》这篇博客中,作者可能详细解释了观察者模式的概念、结构以及其在实际编程中的应用。以下是对观察者模式的详细阐述: 1. **模式定义**:观察者模式是一种对象行为型模式,它允许...
在实际编程中,我们可能会在`DesignMode`这个文件夹中找到与这两种模式相关的代码示例,包括策略接口和具体策略类的定义,以及观察者模式中被观察对象和观察者的实现。通过阅读和理解这些代码,可以更好地掌握这两种...
在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...
观察者模式最好的诠释 模式编程中的观察者模式delphi代码
5. **应用实例**:观察者模式广泛应用于各种场景,如事件驱动编程、GUI组件通信、消息队列等。例如,当用户在网页上点击按钮时,按钮作为被观察者,会触发一系列事件,这些事件的监听器(观察者)会接收到通知并执行...
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...
下面将详细解释观察者模式的概念、结构以及如何在Java中应用这个模式。 **观察者模式的核心概念:** 1. **主题(Subject)**:它是被观察的对象,可以是任何具有状态变化的实体。主题维护着一个观察者列表,并负责...
在实际编程中,观察者模式可以采用两种方式实现: - **接口实现**:定义一个`Observer`接口,让所有观察者实现该接口的`update()`方法。主题通常包含一个`List<Observer>`来存储观察者,通过接口调用每个观察者的...
观察者模式和策略模式是软件设计模式中的两种重要概念,它们在解决特定问题时能提供高效、灵活的解决方案。设计模式是一种在特定情况下解决问题的通用、可重用的解决方案,是经验丰富的软件开发者们智慧的结晶。 ...
本篇文章将深入探讨Qt中的观察者模式(Observer Pattern),这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心...
观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动编程、发布/订阅系统...
例如,在GUI编程中,当用户界面元素的状态改变时,可以使用观察者模式通知其他组件进行相应的更新;在多线程环境下,一个线程完成任务后,可以通过观察者模式通知其他线程进行下一步操作。 观察者模式在Java中得到...
在实际编程中,观察者模式有多种实现方式,如使用接口或抽象类定义观察者和被观察者的交互。例如,在Java中,可以定义一个Observer接口,包含update方法,被观察者类实现一个Observable接口,包含addObserver、...
观察者模式常用于事件驱动编程、GUI组件通信、消息发布/订阅系统等。例如,在Java Swing和JavaFX中,组件之间的交互就大量使用了观察者模式。 ### 5. 扩展与变体 观察者模式有多种变体,如发布/订阅模式、模型-视图...
观察者模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在构建可扩展...在实际编程中,观察者模式广泛应用于事件驱动、用户界面更新、消息传递等场景,对于理解和创建松耦合的系统至关重要。
在编程实践中,观察者模式常用于以下场景: - **GUI组件**:当用户界面中的一个元素发生变化时,其他相关组件可以自动更新。 - **消息系统**:发布者发布消息,订阅者接收并处理消息。 - **状态机**:当状态改变时,...
观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计中的一种行为模式。...无论是使用Apple提供的API还是自定义实现,理解并熟练运用观察者模式都能提升你的编程技能和项目质量。