美文网首页
窃听风云 观察者模式

窃听风云 观察者模式

作者: NazgulSun | 来源:发表于2019-03-14 14:30 被阅读0次

观察模式,其实是用的非常多的模式,

实现sub-pub的核心模式,比如消息队列。

该模式的代码核心逻辑就是 要有一个 observable 和一个 observer

observable顾名思义就是 说我可以被人观察,这样的一个对象,那么必然会提供注册的接口,

想要观察我的人,赶紧注册,然后有个notify方法,你注册了我有事就会通知。

对于一个 observer 对象,那么就需要有一个 update 方法, 意识就是 你有事调用这个方法,相当于留下了联系方式。

在java的jdk中,目前已经有 Observable 和observer的现实实现, 还有一个类似的模式就是Event 和EventListener模式。

其中Event和EventListner模式 和观察者模式大同小异,但似乎大家用 事件 监听模式更多,下面以spring 的例子作为详细解答。

spring context  是一个可以被监听的对象,他可以向listener发布各种各样的事件信息。

实现 listener有两种方法, 注解和实现接口。

基于注解:

@Component

public class AnnotationRegisterListener {

    /**

    * 注册监听实现方法

    * @param userRegisterEvent 用户注册事件

    */

    @EventListener

    public void register(UserRegisterEvent userRegisterEvent)

    {

        System.out.println("@EventListener注册信息,用户名:"+user.getName()+",密码:"+user.getPassword());

    }

}

基于接口:

@Component

public class RegisterListener implements ApplicationListener<UserRegisterEvent>

{

    /**

    * 实现监听

    * @param userRegisterEvent

    */

    @Override

    public void onApplicationEvent(UserRegisterEvent userRegisterEvent) {

        System.out.println("注册信息,用户名:"+user.getName()+",密码:"+user.getPassword());

    }

}

发布事件,使用applicationcontext publish方法

@Service

public class UserService

{

    @Autowired

    ApplicationContext applicationContext;

    public void register(UserBean user)

    {

        applicationContext.publishEvent(new UserRegisterEvent(this,user));

    }

}

目前spring的publish事件中,listener监听的顺序是不保证的,同时事件的处理是同步的。

如果要实行按顺序的事件监听,需要实现SmartApplicationListener,如果想要异步,可以使用

spring的@Async实现异步监听,在这里省略。

相关文章

  • 窃听风云 观察者模式

    观察模式,其实是用的非常多的模式, 实现sub-pub的核心模式,比如消息队列。 该模式的代码核心逻辑就是 要有一...

  • 那些被片名拖累的优秀影视作品

    1、 窃听风暴! 窃听风暴! 窃听风暴! 不是窃听风云! 不是窃听风云! 不是窃听风云! 听名字以为是部无脑犯罪动...

  • 窃听风云

    夜已深。唉,近几日锻炼身体让我想各种葛优瘫补充睡眠,可偏不凑巧,隔壁屋那家夫妻噪音太大。 大家可别想歪啊,我还没说...

  • 窃听风云

    不错,地点又是地铁上。某站上来了一男三女一行人,应该是一个单位的。女一号问女二号,今天忙吗?女二回答忙,下午来了一...

  • 窃听风云

    清明节假期把窃听风云123部都看完了,只看了一边,可能有的地方理解不到位吧。 我觉得第一部的结局挺憋屈的,虽然说没...

  • 十大经典系列电影,仅有一部内地片,彰显香港电影曾经是多么辉煌

    以男人的视界看世界——敬请关注,海豚男人邦 10、《窃听风云》3部 《窃听风云》以警方调查商业犯罪为故事主线,展示...

  • 窃听能夺回爱情吗?

    1. 《窃听风云》:被监听的爱情宿命是毁灭 前段时间再次看了电影《窃听风云3》这是关于金钱、欲望、爱情的野心勃勃的...

  • 宿舍“窃听”风云

    我在单位有宿舍,只是中午随便休息一下,晚上从不在宿舍住。但今天加班太迟了,想想还是回宿舍睡一晚吧。进宿舍躺在床上,...

  • 窃听风云2

    【窃听风云2】是由一起平常的交通事故,后来证券商的副驾被发现遭人窃听,后来经过警方调查,因窃听器是用在军事上的,而...

  • 《窃听风云2》

    .“地主会在”在现实中是否存在?若存在有哪些表现可以证明?提起赌博,我们首先想到的就是普通人中麻将与扑克的游戏,还...

网友评论

      本文标题:窃听风云 观察者模式

      本文链接:https://www.haomeiwen.com/subject/ztgqmqtx.html