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

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

  • 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() {
              //观察者中的方法
          }
      });
    
  • 总结:回调的本质就是对象的引用传递过程。

你可能感兴趣的:(观察者设计模式初见(回调))