接口回调
程序员文章站
2022-10-16 16:33:34
前几天学了接口回调,现在总结一下接口回调是什么原理:假设我们现在需要实现一个通知的功能,需求是A在执行循环,当循环到5的时候, 通知B。以前我们是直接把B类的实例传到A对象中,A类代码如下: B类代码: 主方法: 这样就会有一个缺陷。万一这个A类是早在1988年写好了的,1988年的程序员怎么知道你 ......
前几天学了接口回调,现在总结一下接口回调是什么原理:假设我们现在需要实现一个通知的功能,需求是a在执行循环,当循环到5的时候, 通知b。以前我们是直接把b类的实例传到a对象中,a类代码如下:
package com.itheima.demo; public class a { // 我是a类,我要接口回调 void printlt(b b) { for (int i = 1; i <=10; i++) { system.out.println("1988年的第几"+i+"次"); if (i==5) { b.println2(); } } } }
b类代码:
package com.itheima.demo; public class b { public void println2() { // todo auto-generated method stub system.out.println("2018年到了5"); } }
主方法:
package com.itheima.demo; public class test { public static void main(string[] args) { // todo auto-generated method stub a a=new a(); b b= new b(); a.printlt(b); //调用a的打印方法 } }
这样就会有一个缺陷。万一这个a类是早在1988年写好了的,1988年的程序员怎么知道你要传什么对象,要实现什么功能呢?因此出现了接口回调。
我们先定义一个接口:
package com.itheima.demo; public interface listenerb { void println2(); //定义一个打印的方法 }
使用接口回调的a类代码:
package com.itheima.demo; public class a { // 我是a类,我要接口回调 public void printlt(listenerb b) { //这里就变成了接口的实例 for (int i = 1; i <=10; i++) { system.out.println("1988年的第几"+i+"次"); if (i==5) { b.println2(); //这里是接口定义好了的方法,b类只要实现接口的方法就可以了 } } } }
使用接口回调的b类代码:
package com.itheima.demo; public class b implements listenerb { //我们只要实现这个接口就可以了 @override public void println2() { // todo auto-generated method stub system.out.println("2018年到了5"); } }
主方法:
package com.itheima.demo; public class test { public static void main(string[] args) { // todo auto-generated method stub a a=new a(); listenerb b=new b(); a.printlt(b); } }
这样我们就写好了一个简单的接口回调。
上一篇: 系统架构-设计模式及架构模式(干货)
下一篇: 形而上的机器学习