C, C++a或JS里经常有回调方法,它们都是通过指针来实现的。
例如在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。
下面模拟一下Android中的Activity方法回调思想:
1.Activity接口
package com.maker.test;
//定义接口
public interface Activity{
public void onCreate();
.....
public void onDestory();
}
2.Activity接口的实现类MyActivity
package com.amaker.test
//定义一个类实现Activity接口
public calss MyActivity implements Activity{
@Override//实现方法,简单输出
public void onCreate(){
System.out.println("onCereate");
}
....
@Override//实现方法,简单输出
public void onDestory(){
System.out.println("onDestory");
}
}
3.系统运行环境类AndroidSystem
package com.amaker.test;
//系统运行安装类
public class AndroidSystem{
//定义常量
public static final int CREATE=1;
....
public static final int DESTORY=2;
//运行方法
public void run(Activity a,int state){
switch(state){
case CREATE:
a.onCreate;
break;
....
case DESTORY:
a.onDestory();
break;
}
}
}
4.测试类
package com.amaker.test;
//测试类
publilc class Test{
public static void main(String[] args){
//实例化AndroidSystem
AndroidSystem system = new AndroidSystem();
//实例化MyActivity
Activity a = new MyActivity();
system.run(a,AndroidSystem.CREAATE);
....
system.run(a,AndroidSystem.DESTORY);
}
}
以上可以看出,接口(系统框架)是系统提供的,接口的实现是用户实现的,这样可以达到接口统一,实现不同的效果。
系统在不同的状态“回调”我们的实现类,来达到接口和实现的分类。
而JAVA中不允许直接操作指针,那它的回调是如何实现的呢?
答案:它是通过接口(implements)来实现的。
JAVA方法回调是功能定义和功能实现分享的一种手段,是一种耦合设计思想。作为一种架构,必须有自己的运行环境,并且提供用户的实现接口。例如在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。
下面模拟一下Android中的Activity方法回调思想:
1.Activity接口
package com.maker.test;
//定义接口
public interface Activity{
public void onCreate();
.....
public void onDestory();
}
2.Activity接口的实现类MyActivity
package com.amaker.test
//定义一个类实现Activity接口
public calss MyActivity implements Activity{
@Override//实现方法,简单输出
public void onCreate(){
System.out.println("onCereate");
}
....
@Override//实现方法,简单输出
public void onDestory(){
System.out.println("onDestory");
}
}
3.系统运行环境类AndroidSystem
package com.amaker.test;
//系统运行安装类
public class AndroidSystem{
//定义常量
public static final int CREATE=1;
....
public static final int DESTORY=2;
//运行方法
public void run(Activity a,int state){
switch(state){
case CREATE:
a.onCreate;
break;
....
case DESTORY:
a.onDestory();
break;
}
}
}
4.测试类
package com.amaker.test;
//测试类
publilc class Test{
public static void main(String[] args){
//实例化AndroidSystem
AndroidSystem system = new AndroidSystem();
//实例化MyActivity
Activity a = new MyActivity();
system.run(a,AndroidSystem.CREAATE);
....
system.run(a,AndroidSystem.DESTORY);
}
}
以上可以看出,接口(系统框架)是系统提供的,接口的实现是用户实现的,这样可以达到接口统一,实现不同的效果。
系统在不同的状态“回调”我们的实现类,来达到接口和实现的分类。