java 中的观察者模式实现之接口回调

  在学习的过程过,多次见到回调接口的时候,有时候觉得自己会了,当要自己马上写一个回调的实际例子出来还是感到挺吃力的,所以在此写一篇博客,记录一下自己对回调的理解,免得自己忘了的时候没有参考。


1.首先简单的介绍一下什么事回调方法吧,计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码引用。这一设计允许了底层代码调用在高层定义的子程序

在摘抄一篇来自别人博客对回调的理解:所谓的回调,就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。


2.那个在java语言里面实现回调的方法比较常见的就是通过接口实现了。下面就是详细的步骤了:

1.既然是接口回调,第一件事当然是新建一个接口啊,并且在接口里面定义抽象方法

public interface 接口 {
		public void 实际运行代码();
}
2.接口类定义好后,我们就可以具体实现接口里面的具体内容了,于是我们新建一个接口主体类,用于实现我们接口里面抽象方法的具体逻辑。

public class 接口主体 implements 接口{
	@Override
	public void 实际运行代码() {
		// TODO Auto-generated method stub
		System.out.println("我是实际运行的代码");
	}	
}

3.第三步是很关键的,我们需要一个中介,去调用在接口里面定义的方法,于是我们新建一个接口的帮助类,用于充当我们调用者和被调用者之间的桥梁。

public class 接口帮助类 {
	private 接口 mInterface;	
	public void 设置接口(接口 mInterface){
		this.mInterface = mInterface;
	}
	
	public void 运行接口里面的逻辑代码(){
		mInterface.实际运行代码();
	}
}

4.最后我们就可以在测试主类里面对我们的回调函数进行测试了

public class 测试主类 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		接口帮助类 help = new 接口帮助类();
		
		help.设置接口(new 接口主体());
		help.运行接口里面的逻辑代码();

	}

}

上述的代码运行的结果是:

我是实际运行的代码


5.当然我们更加偏向于用匿名内部类的方法实现接口的回调

</pre><p><pre name="code" class="html">public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		接口帮助类 aTest = new 接口帮助类();
		aTest.设置接口(new 接口() {
			
			@Override
			public void 实际运行代码() {
				System.out.println("这是Test类里面添加的逻辑代码");
			}
		});
		aTest.运行接口里面的逻辑代码();
	}
	
	
}


 
 

运行的结果是 输出

这是Test类里面添加的逻辑代码

也许这个例子能让你更好的理解接口在实际中的用途吧:

</pre><pre code_snippet_id="1656899" snippet_file_name="blog_20160421_9_1905219" name="code" class="html">public class Test {
	private static 接口帮助类 aTest;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		if(infacte()){
			aTest.运行接口里面的逻辑代码();
		}
		
	}
	
	private static boolean infacte(){
		aTest = new 接口帮助类();
		aTest.设置接口(new 接口() {
			
			@Override
			public void 实际运行代码() {
				// TODO Auto-generated method stub
				System.out.println("test");
			}
		});
		return true;
	}

}


运行的接口就是输出 Test

。。。以上就是我个人对回调函数一点小小的总结,用于以后忘时可以有一个可以参考的东西。最后说一句,以上的代码只是方便理解,并不推荐这个代码面名风格.


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值