观察者模式之自己实现(ObserverPattern)

本文介绍了一种简单实用的观察者模式实现方式,包括定义主题与观察者的接口及具体类,展示了如何通过注册观察者实现数据变化时的自动通知。

观察者模式:在对象之间建立一对多的关系,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。

 

因为继承java.util.Observable和java.util.Observer已经介绍过了,今天我们介绍一个自己实现的观察者模式。上代码:

 

“主题”接口,负责增加、删除“观察者”,还有发布消息。

 

“观察者”接口,只负责更新。

 

“显示”接口,跟业务有关,在这里,我们用它来输入结果。

 

“主题”的具体类,在这个类里面,它负责把一个“观察者”放进列表里面(registeObserver),接收它自己需要的信息(setMessage),并发布到所有的“观察者”去(notifyObserver)。

 

“观察者”具体类,他在初始化的时候,就在“主题”里注册了,update方法是继承Observer的,它会被自动调用。

 

Test类,可见,只要注册了,当“主题”数据变化的时候,就会自动发布给“观察者”。

 

      “观察者”模式其实很简单,就会一个注册,然后在把List迭代,把List里面的元素全部发送一次,就OK啦。自己实现的观察者模式比api的那个好一点,灵活性强,关键的是,它是一个接口,api的是一个类。基于对接口编程的思想,我们应该尽量考虑自己实现观察者模式。 

      当然,这里只是一个非常简单的例子,在实际应用中,观察者模式是非常常用,而且层次也会很多的。具体问题具体分析。好了,写了2个观察者模式了,观察者模式到此为止。谢谢!O(∩_∩)O哈哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值