博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava学习笔记-简化观察者模式的实现
阅读量:6005 次
发布时间:2019-06-20

本文共 1464 字,大约阅读时间需要 4 分钟。

hot3.png

###问题描述

实现一个观察者模式,监听方法接受一个Integer参数,并且其打印出来

###自己实现

public static void main(String[] args) {    EventSource eventSource = new EventSource();    eventSource.register(new Listener());    eventSource.print(1);}interface Print {    void print(Integer integer);}static class EventSource implements Print {    private Set
listeners = Sets.newCopyOnWriteArraySet(); public void print(Integer integer) { for (Print listener : listeners) { listener.print(integer); } } public void register(Print print) { listeners.add(print); }}static class Listener implements Print { public void print(Integer integer) { System.out.println(integer); }}

###使用JDK实现

public static void main(String[] args) {    EventSource eventSource = new EventSource();    eventSource.addObserver(new Listener());    eventSource.print(1);}static class EventSource extends Observable {    public void print(Integer integer) {        setChanged();        notifyObservers(integer);    }}static class Listener implements Observer {    public void update(Observable o, Object arg) {        System.out.println(arg);    }}

###使用Guava

public static void main(String[] args) {    EventBus eventBus = new EventBus();    eventBus.register(new Listener());    eventBus.post(1);}static class Listener {    @Subscribe    public void print(Integer integer) {        System.out.println(integer);    }}

转载于:https://my.oschina.net/u/565871/blog/608641

你可能感兴趣的文章
Python strip lstrip rstrip使用方法
查看>>
Linux开发工具_1_gcc入门(上)
查看>>
在这里安家了
查看>>
ERP项目更应授人以渔
查看>>
我的友情链接
查看>>
thinkpython2
查看>>
JDK、JRE和JVM的关系
查看>>
String、StringBuffer和StringBuilder的区别
查看>>
【原创】ObjectARX中的代理对象
查看>>
.net中验证码的几种常用方法
查看>>
解决OracleDBConsoleorcl不能启动
查看>>
.net DLL程序集中打包另一个DLL
查看>>
我的友情链接
查看>>
Drupal第三方模块汇集(一)
查看>>
我的友情链接
查看>>
使用spring的自身的listener进行web的配置
查看>>
linux学习之“VI”与“VIM”
查看>>
linux下无线网卡驱动安装
查看>>
oracle recyclebin与flashback drop
查看>>
我的友情链接
查看>>