Windows环境下JDK对观察者模式的支持
创始人
2024-06-02 10:02:48
0

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows环境下JDK对观察者模式的支持。

不知道大家有没有这样的感觉,看了一大堆编程和设计模式的书,却还是很难理解设计模式,无从下手。为什么?因为你看的都是理论书籍。

我今天就在Windows操作系统上安装好JAVA的IDE编程工具,通过动手来理解。

观察者模式和Java究竟有什么样的密切关系,就我所知道的,就有很多,比如循环遍历一个集合,就是一种设计模式。今天我们要讨论一下Java语言有没有支持观察者模式的类或接口,我现在可以给出肯定的回答,肯定是有的,下面我们来详细介绍一下。

观察者模式在Java语言中占据非常重要的地位。在JDK的java. util包中提供了Observable类以及Observer接口,它们构成了JDK对观察者模式的支持,如下图:

下面再仔细看看Observer接口和Observable类,并进行简要说明。

Observer接口

在java. util. Observer接口中只声明一个方法,它充当抽象观察者,其方法声明代码如下:

void update(Observable o, Object arg);

当观察目标的状态发生变化时该方法将会被调用,在Observer的子类中将实现update()方法,即具体观察者可以根据需要具有不同的更新行为。当调用观察目标类Observable的notifyObservers()方法时将执行观察者类中的 update()方法。

Observable类

java. util. Observable类充当观察目标类,在 Observable中定义了一个向量 Vector 来存储观察者对象,它所包含的方法及说明见下:

Observable()

构造方法,实例化Vector向量

addObserver(Observer o)

用于注册新的观察者对象到向量中

deleteObserver(Observer o)

用于删除向量中的某一个观察者对象

notifyObservers() notifyObservers(Object arg)

通知方法,用于在方法内部循环调用向量中每一个观察者的update()方法

deleteObservers()   

用于清空向量,即删除向量中所有的观察者对象

setChanged()

该方法被调用后会设置一个boolean类型的内部标记变量changed的值为true,表示观察目标对象的状态发生了变化

clearChanged()

用于将changed变量的值设为false,表示对象状态不再发生改变或者已经通知了所有的观察者对象,调用了它们的update()方法

hasChanged()

用于测试对象状态是否改变

countObservers()

用于返回向量中观察者的数量

用户可以直接使用Observer接口和Observable类作为观察者模式的抽象层,再自定义具体观察者类和具体观察目标类。通过使用JDK中的Observer接口和Observable类可以更加方便地在Java语言中应用观察者模式。

各位小伙伴,这次我们就说到这里,下次我们再深入研究windows环境下的各类设计模式实现。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

相关内容

热门资讯

哪里找正规一块红中麻将群@百... 1.进群方式《ab120590》或者《mj120590》《tj525555》--QQ(4434063...
「发布」加入附近红中麻将群@(... 群主微【ab120590】 【mj120590】【tj525555】免带押进群,群内跑包包赔支持验证...
《百度科普》24小时一元一分红... 群主微信【ab120590】【tj525555】【mj120590】一元 两元 麻将群跑得快群都有,...
揭秘红中麻将微信群@2024已... 认准管理加v:微【ab120590】【mj120590】【tj525555】七年稳定老群!随时拿起手...
《优酷视频》一元一分红中麻将... 薇新【ab120590】【mj120590】【tj525555】,最火热的跑得快,红中等等。自助上下...
[解读]上下分跑得快红中麻将@... 1.亮点:一元红中麻将微信“群”—ab120590—tj525555—mj120590—客服Q443...
来这里正规靠谱红中麻将群@24... 好运连连,全网推荐:(ab120590)(mj120590)【tj525555】-Q号:(QQ443...
必看科普24小时红中麻将群@2... 认准管理加v:微【ab120590】【mj120590】【tj525555】七年稳定老群!随时拿起手...
火爆正规靠谱红中麻将群@202... 好运连连,全网推荐:(ab120590)(mj120590)【tj525555】-Q号:(QQ443...
《西瓜视频》一元一分微信红中麻... 好运连连,全网推荐:(ab120590)(mj120590)【tj525555】-Q号:(QQ443...
《麻将玩法》24小时一元一分微... 认证群主微信微【ab120590】 【mj120590】【tj525555】(一元俩元红中麻将)(跑...
重大发现手机红中麻将跑的快群@... 1.进群方式-[ab120590]或者《mj120590》【tj525555】--QQ(QQ4434...
桌游常识真人线上一元一分红中麻... 1.亮点:一元红中麻将微信“群”—ab120590—tj525555—mj120590—客服Q443...
《经市财经》哪里有一元一分微信... 群主微【ab120590】【tj525555】 【mj120590】亲友团上下分模式,24小时全天不...
桌游常识一元上下分麻将@202... 1.亮点:一元红中麻将微信“群”—ab120590—tj525555—mj120590—客服Q443...
哪里找哪有一块红中微信群@微博... 群主微【ab120590】【tj525555】 【mj120590】亲友团上下分模式,24小时全天不...
[如何加入]靠谱红中麻将微信@... 1.进群方式《ab120590》或者《mj120590》《tj525555》--QQ(4434063...
「独家解读」24小时不熄火红中... 一元一分麻将群加群主微:微【ab120590】 【mj120590】【tj525555】喜欢手机上打...
必看经典红中麻将微信群@全面升... 加V【ab120590】【tj525555】【mj120590】红中癞子、跑得快,等等,加不上微信就...
今日头条正规红中麻将上下分群@... 1.进群方式-[ab120590]或者《mj120590》【tj525555】--QQ(QQ4434...