java超简单的android安卓回调函数的小范例理解

     首先要申明回调的概念不是安卓的,而是java的,所以当你卡在安卓的回调函数理解上的时候,不妨先看完这篇文章,也许会给你一些启示。

 

     在理解回调前,在网上找了很多很多的安卓回调的案例,但是都理解不了,我怀疑我的理解能力有问题,但相信比我聪明的你能够得到你想要的知识。

 

     首先,我们要理解,为什么要用回调?回调有什么好处?回调主要是能给代码解耦,增加代码的重用性,那让我们一起来看看这段代码。

 

     一开始,我把代码全部写在一个名为Test的java文件里,跟回调无关,代码很简单。直接看:

 

public class Test {

//正常程序流程,第三步要实现的方法不会写,先调出去给别人写

public static void paint(MyPaint f){

System.out.println("第一步");

System.out.println("第二步");

System.out.println("第三步不会写");

f.mypaint();  //这里相当于一个钩子,你main方法里调用哪个类,这里就实现什么方法,调用第一个类就实现第一个类中重写的方法,调用第二个类就实现第二个类中重写的方法,很好的保障了代码的重用性。

System.out.println("第四步");

}

 

public static void main(String[] args){

paint(new Test1Paint());

paint(new Test2Paint());

}

}

//定义一个接口,在接口里定义一个方法,所有实现这个接口的类都要重写接口中的方法

public interface MyPaint {

public void mypaint();

}

//第一个实现了接口里的方法并重写

class Test1Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---1---Paint的方法");

}

}

//第二个实现了接口里的方法并重写

class Test2Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---2---Paint的方法");

}

}

 

 

 

 

接下来要完成的是将这些代码解耦:

思路,1、接口与实现接口的类可以放在一个java文件中,2、程序正常流程放在一个java文件中,3、main方法放在一个文件中,因此,我的最终代码是这样:


第一个文件:Test.java


<span style="font-size:14px;">package com.tuzhi.www;

 

public class Test {

public static void main(String[] args){

TestPaint test=new TestPaint();

test.paint(new Test1Paint());

test.paint(new Test2Paint());

}

}</span>


 

第二个文件:MyPaint.java


<span style="font-size:14px;">package com.tuzhi.www;

 

public interface MyPaint {

public void mypaint();

}

 

class Test1Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---1---Paint的方法");

}

}

 

class Test2Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---2---Paint的方法");

}

}</span>


 

第三个文件:TestPaint


<span style="font-size:14px;">package com.tuzhi.www;

 

public class TestPaint {

public void paint(MyPaint f){

System.out.println("第一步");

System.out.println("第二步");

System.out.println("第三步不会写");

f.mypaint();

System.out.println("第四步");

}

}</span>


 

当然,我是小白,大家觉得哪里讲得不对的地方,欢迎指正,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值