设计模式

回调模式
异步回调
简单介绍:
回调参数的接口类似于get和set方法,当通知方提出问题时,设置方回答答案,然后回调给通知方设置方给出的答案。
注意点:
1.通知类必须实现回调接口,等待从回调接口接收参数。
2.设置方必须在方法中,引入回调接口参数,通过调用回调接口设置答案。
3.异步的回调就是在通知方中新开一个线程来调用设置方。
案例
1:注册一个回调参数的接口
public interface CallBack {
   void solve(String result);
}
2:参数的设置方
public class Li {
   public void executeMessage(CallBack callBack,String question){
      System.out.println("服务端:服务端接收到客户端发送的消息为:" + question);
      // 模拟服务端需要对数据处理
        try {
            Thread.sleep(5 * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        /**
         * 小李办完自己的事情之后想到了答案是2
         */
        String result = "答案是2";
 
        /**
         * 于是就打电话告诉小王,调用小王中的方法
         * 这就相当于B类反过来调用A的方法D
         */
        callBack.solve(result);
   }
}
3:设置通知类
public class Wang implements CallBack{
   private Li li;
 
   public Wang(Li li) {
      this.li = li;
   }
  
   public void askQuestion(String question){
       System.out.println("客户端:发送的消息为:" + question);
           new Thread(new Runnable() {
               @Override
               public void run() {
                   li.executeMessage(Wang.this,question);
               }
           }).start();
       System.out.println("客户端:异步发送成功");
   }
 
   @Override
   public void solve(String result) {
      System.out.println("小李告诉小王的答案是--->"+result);
   }
  
}
4:main方法引用
public static void main(String[] args) {
      Li li=new Li();
      Wang wang = new Wang(li);
        wang.askQuestion("1+1=?");
}

posted on 2017-02-16 18:21  阿发仔  阅读(130)  评论(0编辑  收藏  举报

导航