zoukankan      html  css  js  c++  java
  • 回调函数 和接口

    回调

    所谓的回调,就是客户程序 C 调用程序 S 中的一个函数A ,然后 S  又反回来调用 C 中的某个函数 B ,

    对 C 来说,这个 B 就是回调函数。

    图示如下:

    对于C来说 ,B就是回调函数。

    C不会自己调用 B,提供 B的目的 就是让S来调用,而且 是C不得不提供 的。

    由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个

    函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及

    Java的RMI都用到回调机制,可以访问远程服务器程序。

    -----------------------------------------------------------------------

    接口

    你都没有理解接口的含义。类是对象的抽象,接口抽得更厉害,是类的抽象。不打机锋,直接看尘世的七情六欲。

    比如,你要一个充气娃娃,这个充气娃娃有一个makeLove方法,你买这个娃娃就是冲着makeLove去的,你不关心它是哪国的娃娃,长得怎样。那么代码就体现为:

    interface Chongqiwawa{
    public void makeLove(String name);
    }

    class Person{
    Chongqiwawa wawa;
    public void setWawa(Chongqiwawa wawa){
    this.wawa = wawa;
    }
    private String name;
    public void makeLove(){
    //调用wawa的makeLove方法
    wawa.makeLove(name);
    }
    现在,你想和wawa那个,就可以这样用了:
    main(){
    Person you = new Person();
    you.makeLove();
    }

    报错了吧?你怎么能跟虚的wawa那个呢?所以必须要买一个wawa.好吧,去逛成人店选购一个wawa.这里有日本娃娃,美国娃娃,先看看美国娃娃功能怎么样。

    class USAWawa implements Chongqiwawa{
    public void makeLove(String name){
    System.output.println(name + " come on! a,a, a...");
    }
    }
    好吧,你已经流口水了,一口价成交,然后带回家,迫不及待实践一下,代码体现为:
    main(){
    Person you = new Person();
    Chongqiwawa wawa = new USAWawa();
    you.setWawa(wawa);
    you.makeLove();
    }

    这时候你已经可以和娃娃水乳交融了。不久,你发觉厌倦了美国娃娃,想试下日本娃娃,再次来到成人超市,日本娃娃makeLove功能实现如下:
    class JapanWawa implements Chongqiwawa{
    public void makeLove(String name){
    System.output.println(name + " yemede! a,a, a...ganbade...");
    }
    }
    OK,你直接丢下一堆钞票一句不用找就抱回家了,马上进入主题:

    main(){
    Person you = new Person();
    //获得实际的wawa
    Chongqiwawa wawa = new JapanWawa();
    you.setWawa(wawa);
    you.makeLove();
    }
    看见了吗,只需改动一行代码,你就实现了娃娃的切换,得到不同的makeLove感受,其他代码都不用改。

    OK,停止 YY,回到主题。
    这里的Chongqiwawa 对应于 ActionListener,你要实现actionListener接口就相当于实现一个美国娃娃或日本娃娃,然后你addActionListener,就相当于给系统提供一个wawa,系统只要在产生相应事件时调用接口的actionPerformed方法,就相当于你在饥渴时调用makeLove方法,你知道有这个方法即可,不用关心他是哪来的和怎么实现的。
  • 相关阅读:
    关于《构建之法》读后感
    Lab04
    实验3_2
    实验3
    (1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”); (2)编写单元测试进行测试; (3)用ElcEmma查看代码覆盖率,要求覆盖达到100%。
    1)把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”; (2)编写单元测试进行测试; (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%
    个人简介
    平凡如我......
    第四次博客作业
    《构建之法》读后感
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/4077193.html
Copyright © 2011-2022 走看看