回调(CallBack)
回调方法是把功能定义和功能实现分离的一种手段,是一种松耦合的设计思想。
Android中的控件响应就是利用了回调方法。
<span style="font-family:SimSun;font-size:18px;">class MyFrame{
/**
* 回调方法的基类
*/
public void paint(){
System.out.println("把自己窗口画出来");
}
}
class GameFrame01 extends MyFrame{
public void paint(){
System.out.println("GameFrame01.paint()");
System.out.println("画窗口01");
}
}
class GameFrame02 extends MyFrame{
public void paint(){
System.out.println("GameFrame02.paint()");
System.out.println("画窗口02");
}
}
/**
* 回调类
* @author Dell
*
*/
public class PaintFrame{
public static void drawFrame(MyFrame f){
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息栈");
/**
* 画窗口
* 回调:把功能定义和功能实现分离
* 模板设计模式:多态的引用,由形参决定调用哪一个类
*/
f.paint();
System.out.println("启动缓存,增加效率");
}
public static void main(){
//drawFrame(new GameFrame01());
drawFrame(new GameFrame02());
}
}</span>
在PaintFrame类中的drawFrame方法就是回调的监听方法:
<span style="font-family:SimSun;font-size:18px;">public static void drawFrame(MyFrame f){
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息栈");
/**
* 画窗口
* 回调:把功能定义和功能实现分离
* 模板设计模式:多态的引用,由形参决定调用哪一个类
*/
f.paint();
System.out.println("启动缓存,增加效率");
}</span>
其中:
<span style="font-family:SimSun;font-size:18px;">f.paint(); </span>
就像一个钩子调用形参传递过来的变量来调用相应对象的方法
而在drawFrame方法中的其他部分就如同一个模板,不变的。
本文参考:
http://hellosure.iteye.com/blog/1130176
http://wangyang0311.iteye.com/blog/368031
http://blog.youkuaiyun.com/zuolongsnail/article/details/6598226