暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

观察者模式的实现及源码中应用

码农的修炼之道 2019-05-23
475

 观察者模式定义了对象之间的一对多依赖关系,让多个观察者同时监听某个主题对象,当主题发生变化,所以观察者都会受到通知并更新。观察者模式应用很广泛


观察者模式是一种行为型设计模式。


01

应用案例

     电商网站上经常有商品降价通知,用户可以点击关注该商品或者加入购物车。当商品价格变化的时候,会通知用户。

    这里面,商品就是一个被观察的对象。用户就是观察者。

   我们首先来定义一个商品类:Product,我们使用Java.util包下的Observer类,我们继承这个类,这个商品就具有了可以被观察的属性。

     接下来,我们实现一个价格类Price。

   最后,我们来实现一下用户类User,我们让User实现了Observer接口,这样该用户就能收到被观察对象的通知。

      最后,来实现一个测试类:

测试结果如下:


02


源码中应用

    在JDK中,一个典型的应用就是AWT和Swing中添加的监听器。

    在Guava中,EventBus也是使用观察者模式实现的最佳实践。比如源码中的注册方法,就是用来通知所有注册者的变化。

    比如其中的post方法,就是用来通知观察者的。

文章转载自码农的修炼之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论