观察者设计模式初见(回调)

需求:当在一个类中需要调用另一个类中的方法,使其具备通用性,使用步骤总结如下:

  • 1、找出被观察者objectB(被观察者就是事件发生者)【观察者:需要被调用方法的对象】

  • 2、在被观察者中定义一个观察者接口,接口中的方法就是观者感兴趣的事件

      public interface onRefreshListener {    //定义为接口因为java中不支持多继承
          public void onRefresh();            //
      }
    
  • 3、在被观察者中保存观察者的引用

      private onRefreshListener listener;     //观察者的引用
      public void setOnRefreshListener(onRefreshListener listener){
          this.listener = listener;
      }
    
  • 4、在事件发生的时候,通知观察者,调用观察者中的方法

      private void notifyRefresh(){
          if (listener != null){      //排除没被调用的状态
              listener.onRefresh();
          }
      }
    
  • 5 在被观察者中,事件发生时调用通知事件

      ...
      notifyRefresh();
      ...
    
  • 6 在观察者中,同被观察者所属的父类对象调用

      objectB.setOnRefreshListener(new RefreshListView.onRefreshListener() {
          @Override
          public void onRefresh() {
              //观察者中的方法
          }
      });
    
  • 总结:回调的本质就是对象的引用传递过程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 订阅报纸的过程## 来考虑实际生活中订阅报纸的过程,这里简单总结了一下,订阅报纸的基本流程...
    七寸知架构阅读 10,129评论 5 57
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,559评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,963评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,195评论 1 114
  • 被战争灌满的一册, 很难表述一种结论性的概论。因为历史是立体并且妙趣横生的。 我想不如摘一些若有所思的片段,再撒上...
    燕居如斋zzzw阅读 2,372评论 1 2