Java中的回调机制就是写纸条表白
2016-05-31 15:05
453 查看
这是书上对于JAVA回调的理解。
回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,看了人家说比较经典的回调方式:
1、Class A实现接口CallBack callback
2、class A中包含一个class B的引用b
3、class B有一个参数为callback的方法f(CallBack callback)
4、A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C
5、然后b就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D
是不是看着很晕。我也是看着特别晕。说点我自己的理解。
1、I call you then I give a message for you
2、you call back then you return the result of the message for me
3、the message is the interface
人话就是:我给你一个纸条,上面写着我喜欢你,你在那张纸条上给我答复。
纸条,对应的是接口;我,对应的是ClassA ;你,对于的Class B 。
废话不多说,上代码。
这是纸条这个接口
/**
* 这就是小纸条,上面会写点自己的心里话
*
*/
interface SmallNote{
void write(String result);
}
下面是“Me”这个类
/**
* 因为我要找你,所以我中有你,so我的构造方法的参数是you。
* (1、class Me中包含一个class You的引用you)
*
* 我要在纸条上写东西,所以要继承接口Smallnote。
* (2、Class Me实现接口SmallNote smallNote。)
*
* 我要问你问题,这就是ask方法
* 我要等你回复,这就是write方法
* @author Administrator
*/
static class Me implements SmallNote{
private You you;
private SmallNote smallNote;
public Me(You you){
this.you=you;
}
/**
* (4、Me的对象me调用You的方法 handle(smallNote,question)
* Me类调用YOU类的某个方法 handle)
* 我问你问题,你要处理这个纸条和相关的问题。
* @param question
*/
public void ask(final String question){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
you.handle(smallNote, question);
}
}).start();
}
@Override
public void write(String result) {
// TODO Auto-generated method stub
System.out.print("结果是:"+result);
}
}
这是Yout
这是测试类
Java的回调机制,其实把进和出的管道已经固定好:传出消息和收回消息的方式已经确定,使用者需要做的就是,收到消息之后,处理消息,再传递出去。
Java的回调机制其实是两个对象之间的交互,也是对象之间的相互改变,。线程是一种回调,广泛的使用的各种开源项目基本原理大部分也是回调。
Java的回调也实现了高内聚,低耦合的特点。
第一次写博客,请大家多多指教
回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,看了人家说比较经典的回调方式:
1、Class A实现接口CallBack callback
2、class A中包含一个class B的引用b
3、class B有一个参数为callback的方法f(CallBack callback)
4、A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C
5、然后b就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D
是不是看着很晕。我也是看着特别晕。说点我自己的理解。
1、I call you then I give a message for you
2、you call back then you return the result of the message for me
3、the message is the interface
人话就是:我给你一个纸条,上面写着我喜欢你,你在那张纸条上给我答复。
纸条,对应的是接口;我,对应的是ClassA ;你,对于的Class B 。
废话不多说,上代码。
这是纸条这个接口
/**
* 这就是小纸条,上面会写点自己的心里话
*
*/
interface SmallNote{
void write(String result);
}
下面是“Me”这个类
/**
* 因为我要找你,所以我中有你,so我的构造方法的参数是you。
* (1、class Me中包含一个class You的引用you)
*
* 我要在纸条上写东西,所以要继承接口Smallnote。
* (2、Class Me实现接口SmallNote smallNote。)
*
* 我要问你问题,这就是ask方法
* 我要等你回复,这就是write方法
* @author Administrator
*/
static class Me implements SmallNote{
private You you;
private SmallNote smallNote;
public Me(You you){
this.you=you;
}
/**
* (4、Me的对象me调用You的方法 handle(smallNote,question)
* Me类调用YOU类的某个方法 handle)
* 我问你问题,你要处理这个纸条和相关的问题。
* @param question
*/
public void ask(final String question){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
you.handle(smallNote, question);
}
}).start();
}
@Override
public void write(String result) {
// TODO Auto-generated method stub
System.out.print("结果是:"+result);
}
}
这是Yout
static class You{ /** * 处理你的纸条和问题。 * (3、Class You 有一个参数为SmallNote的方法f(smallNote,question)) * * 写下结果 * (5、You就可以在handle(smallNote,question)方法中调用ME的方法) * @param smallNote * @param question */ public void handle(SmallNote smallNote,String question){ System.out.print(question+":你喜欢过我么 "); smallNote.write("爱过"); } }
这是测试类
/** * 测试类 * @param args */ public static void main(String[] args) { You you=new You(); Me me=new Me(you); me.ask("你喜欢我么"); }
Java的回调机制,其实把进和出的管道已经固定好:传出消息和收回消息的方式已经确定,使用者需要做的就是,收到消息之后,处理消息,再传递出去。
Java的回调机制其实是两个对象之间的交互,也是对象之间的相互改变,。线程是一种回调,广泛的使用的各种开源项目基本原理大部分也是回调。
Java的回调也实现了高内聚,低耦合的特点。
第一次写博客,请大家多多指教
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树