zoukankan      html  css  js  c++  java
  • java设计模式--事件监听器模式(观察者模式)

    这两个模式实质上很简单,在实际项目中也是非常常用的。但却被有些人说的云里雾里,这里用白话解释一下。

    本质上两者都是同一个模式。专业的说法是这样的(觉得绕口的请直接转到白话解释部分,再回头来看下面这几句话就好懂了):

    监听器模式:事件源经过事件的封装传给监听器,当事件源触发事件后,监听器接收到事件对象可以执行监听器要实现的业务功能,也可以回调事件源的方法

    观察者模式:观察者(Observer)相当于事件监听者,被观察者(Observable)相当于事件源和事件,执行逻辑时通知触发observer的通知方法,将要处理的数据做为参数传递给观察者。

     

    用白话解释一下:

    1、事件源(被观察者):触发事件的类。在事件源中有一个集合,存放了一系列的监听器(观察者,为了解耦,必须是接口)。

    2、监听器(观察者):实现了监听器接口的实现类。要做的事在接口方法中实现。

    3、触发(通知):循环调用集合中的接口类的方法。此时会将要处理的数据、包括事件源自身一起封装到Event中,交给接口实现类(即监听器、观察者)进行处理。

     

    举个败家子的例子:败家子(事件源、被观察者)没钱了,对者捧着败家子的一坨人(监听器、观察者)吼道:哥没钱了,拿钱来!!!

    于是,爷爷、爸爸、妈妈这些只知道哄着败家子的一坨人(监听器集合)各自调用自己的方法忙开了(有的拿存折,有的卖家产)。

     

    OK,两个模式说完了。

     

  • 相关阅读:
    cygwin 下配置ssh
    使用MarsEdit写博客
    bash no job control in this shell
    安装devtoolset-2:因由安装gcc 4.8而引起
    AFNetworking Property with 'retain (or strong)' attribute must be of object type
    从xib 创建 collectionViewCell
    CocoaPods 安装
    个人理解的 Https 通信流程
    cellforrowatindexpath 不执行 的原因
    do{} while(0) 的意义和用法
  • 原文地址:https://www.cnblogs.com/jpfss/p/9233156.html
Copyright © 2011-2022 走看看