zoukankan      html  css  js  c++  java
  • java回调机制(同步回调)

    场景:父亲问姐姐:弟弟的作业写好了吗?

       姐姐就去问弟弟:弟弟,你作业写好了吗?

       弟弟写完作业后,告诉姐姐:姐姐,我作业写完了!

       姐姐知道后,就告诉父亲:父亲,弟弟作业写完了!

    代码:

    CallBack.java传递消息的接口:

    package myInterfaceCallback;

    public interface CallBack {

    public void tell(String result);
    }

    Brother.java弟弟类:

    package myInterfaceCallback;

    import myInterfaceCallback.CallBack;

    public class Brother {

    public void doHomework(CallBack tellSister, String question) {
    System.out.println(question);
    tellSister.tell("弟弟:姐姐,我已经写完了!");
    }
    }

    Sister.java姐姐类:

    package myInterfaceCallback;

    public class Sister implements CallBack{

    public Brother brother;

    public Sister(Brother brother) {
    super();
    this.brother = brother;
    }

    @Override
    public void tell(String result) {
    // TODO Auto-generated method stub
    System.out.println(result);

    }

    public void toAskBrother(CallBack tellParent, String question) {
    // TODO Auto-generated method stub
    brother.doHomework(Sister.this, question);
    tellParent.tell("姐姐:父亲,弟弟作业写完了!");
    }
    }

    Parent.java父亲类:

    package myInterfaceCallback;

    public class Parent implements CallBack{

    public Sister sister;

    public Parent(Sister sister) {
    super();
    this.sister = sister;
    }

    @Override
    public void tell(String result) {
    // TODO Auto-generated method stub
    System.out.println(result);
    }

    public void askToSister(String question) {
    // TODO Auto-generated method stub
    System.out.println(question);
    sister.toAskBrother(Parent.this, "姐姐:弟弟,你作业做好了吗?");
    }

    }

    Test.java测试运行类:

    package myInterfaceCallback;

    public class Test {

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Parent parent = new Parent(new Sister(new Brother()));

    parent.askToSister("父亲:弟弟作业做好了吗?");
    }

    }

     运行结果:

    父亲:弟弟作业做好了吗?
    姐姐:弟弟,你作业做好了吗?
    弟弟:姐姐,我已经写完了!
    姐姐:父亲,弟弟作业写完了!

  • 相关阅读:
    怎样使用七牛云CDN加速并绑定阿里云域名
    mac系统Docker安装Redis教程
    使用Java Executor框架实现多线程
    我是怎样测试Java类的线程安全性的
    Java8 Stream终端操作使用详解
    Java8 Stream中间操作使用详解
    Java 8创建Stream流的5种方法
    JVM源码分析之Metaspace解密
    全链路压测体系建设方案的思考与实践
    JVM源码分析之Object.wait/notify(All)完全解读
  • 原文地址:https://www.cnblogs.com/zhengbiyu/p/9302577.html
Copyright © 2011-2022 走看看