java 回调机制

作为一个对java回调机制不了解的人来说,一听到回调机制这个名称感觉有点晕,下面先看一张图


java 回调机制_第1张图片

开始模拟一个场景:

/*

* 场景:到吃中饭的时间了,但是张三兜里木有钱,然后我叫张三的好朋友,李二狗i去买饭,买完饭了给我

* 这时候就有一个过程 张三给李二狗子发命令----》李二狗子接受到命令,然后做了自己的一些操作之后---》再反馈给张三处理的结果

* 这就相当于一个闭环,起点是张三终点也是张三

*/

java 代码



packagetest.callback;

importorg.junit.Test;

/**

*  2017/12/21.

*

* 测试java的回调方法

*/

public classMine {

private intmyWallet=0;

/*

* 场景:到吃中饭的时间了,但是我兜里木有钱,然后我叫我的好朋友,李二狗子去买饭,买完饭了给我

* 这时候就有一个过程 我给李二狗子发命令----》李二狗子接受到命令,然后做了自己的一些操作之后---》再反馈给我处理的结果

* 这就相当于一个闭环,起点是我终点也是我

*/

@Test

public voidtest(){

intmyWallet=0;

System.out.println("到中午的吃饭时间了,要开始吃饭了");

//这时候实例化一个我,开始要吃饭了

Mine zhangSan=newMine();

//首先看看我兜里有木有钱

if(zhangSan.getMyWallet()==0){

System.out.println("哎呀今天发完工资就没钱了,就找李二狗子去借点,顺便让他把饭也给买了");

//一摸兜,哎呀今天发完工资就没钱了,就找李二狗子去借点,顺便让他把饭也给买了,真是够懒的,找别人借钱还要让别人给你买饭

//实例化一个李二狗子

OtherPeople lierDog=newOtherPeople();

//让李二狗开始买饭

lierDog.buyMeal(lierDog,zhangSan);

}

}

//就是李二狗要调用的回调方法,告诉我买饭的情况

public voideat(String words){

System.out.println("李二狗反馈说:"+words);

}

public intgetMyWallet() {

returnmyWallet;

}

public voidsetMyWallet(intmyWallet) {

this.myWallet= myWallet;

}

}



packagetest.callback;

/**

* Created by Administrator on 2017/12/21.

*/

public classOtherPeople {

private intmyWallet=10;

public voidbuyMeal(OtherPeople lierDog,Mine mine){

System.out.println("李二狗接到命令,要去买饭了");

//李二狗也要看看自己兜里有没有钱,要是有钱就能买,要是没钱就只好回复没有钱,你喝西北风

if(lierDog.getMyWallet()==0){

mine.eat("我兜里没钱,都要吃土了");

}else{

//TODO 处理买饭一系列事情之后,告诉我买饭的情况

/*

*  一个Mine 类可以实例化无数个我(张三,李四,王五),

*  怎么确定我就是这是让李二狗买饭的人,

*  不至于李二狗接收到张三去买饭命令,回复给李四饭已经买好了,

*  就是通过把类实例化之后的引用,当做参数传给李二狗,李二狗知道是张三这个人让去买饭的,

*  饭买好了就通知张三,而不是通知李四

*/

mine.eat("排了三个小时队,终于买到鸡了,晚上可以大吉大利一起吃鸡");

}

}

public intgetMyWallet(){

return this.myWallet;

}

}




当然这个回调机制耦合是很粗糙的,类与类之间耦合的很深,可以申明接口,去进行解耦。


注明:若文章有问题,欢迎指正。

你可能感兴趣的:(java 回调机制)