模块之间有三种调用方式:
1、同步调用
同步调用很简单,就是直接调用方法B,必须等到方法A执行完才会继续执行原程序。
2、异步调用
异步调用,就是在A程序中给程序B一个实现,当B运行的时候,在满足条件的情况下能够调用A程序中的实现。举例说明
public interface Food { void eat(); } public class Cow implements Food { @override void eat() { syso("eat cow"); } } public class Tiger { private Food food; public void setFood(Food food) { this.food =food; } void hungry() { syso("hungry"); if(eat!=null)food.eat(); } public void static main(String[] args) { Tiger tiger=new Tiger(); tiger.setFood(new Cow()); tiger.hungry(); } }
老虎饿了,假如有食物就可以吃它,现在牛就相当于程序A 实现了这个接口,
老虎就相当于程序B,里面包含这个接口,
现在将牛送到老虎的嘴边,就是setFood
老虎饿了就要吃牛了,这个时候就调用了A程序实现的这个接口。
3、回调
这个写过android程序的肯定会非常熟悉啦,回调其实就是上面两个的组合。
比如一般我们在实例化一个Button类,会给它设置一个OnClickListener,这个就相当于上面的异步调用,但是这个异步调用又是由Button自己引发的,button的 performClick()模拟点击事件然后会执行自定义的OnClickListener。