设计模式:观察者模式(observer) java实现及原理

本文介绍了设计模式中的观察者模式,它定义了一对多的依赖关系,当被观察者对象状态改变时会自动通知所有观察者。文章通过实例解释了如何创建被观察者和观察者,以及如何在客户端进行连接。同时,文中还探讨了内部实现机制,包括`setChanged()`和`notifyObservers()`方法的作用。
摘要由CSDN通过智能技术生成

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。即被观察者改变会自动通知观察者,观察者根据被观察者的变化进行一系列操作。

大概步骤:

1.      创建被观察者, (继承java.util.Observable),在发生改变的地方必须调用

setChanged();//为什么需要调用这两个方法?等下讲原理的时候会提到

notifyObservers();//只有先调用setChanger()后这个才会通知观察者

//也可以是notifyObservers(Object obj);这个是实现带参数的通知,这个参数传递给观察者里的void update(Observable o, Object arg) 方法里的arg参数。

2.      创建观察者,(实现java.util.Observer)

3.      客户端调用时被观察者增加观察者被观察者.addOberver(观察者) ,多个可以增加多次

好了直接看个例子会更好的理解:

例子是这样的一个嫌疑犯生活在厦门,厦门公安甚至国安局都会对他的动向进行观察、跟踪。


 //嫌疑犯 被参观者 需要继承Observable

 

public class Suspect extends Observable{
   private St
环境:Windows XP professional, JDK 1.6, Eclipse 3.3 Europa. 我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--参见本人的“第一个C#程序Hello World ”资源)来看,Java Swing编程是纯粹的OO语言、是一种非常优雅的编程语言(本人认为)--而C#的学习好像非常强调所谓的OO思想,但是不是知道是什么OO思想?(个人观点,请勿激动)。 该示例是翻写一老外Observer Pattern的例子,本人觉得该示例是对该模式的非常精典的说明,于是花点功夫来翻写它,因为他的代码没有注释说明该模式的设计思想怎样体现在代码中去,所以,本人结合代码注释了关键代码的中文意义说明作者怎样表示该设计模式的,以方便Java程序员阅读和理解代码,从而理解该设计模式的思想(本人的注释非常详尽)。 目的,本人认为,作为Java程序员--不是指只会使用JBuilder(或者Websphare等)工具拖拽的java操作员--我们指至少能使用Eclipse工具书写Swing代码的Java编程员,或者使用ant工具编程的Java程序员,应该熟练掌握该设计模式!因为该设计模式贯穿Swing框架的始终。 阅读对象:本锦江中心中从S1阶段就想成为一个Java程序员的学员,并且在S1阶段已经非常认真的学习Java编程的学员。 注:不过该代码应该是本锦江中心Y2阶段Java方向学习的学员的参考代码,因为,该代码是由Y2阶段本教员会讲解。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值