首先接口并不是Java才有的,这个是面向对象语言的基本特征之一。回想面向对象之前的那些
编程语言Win32 API中有个最经典的例子是当你在windows窗口中绘制一些内容以后,最大
化再最小化以后内容没了,原因是你没有捕获重写windows的一个WM_Paint的消息,
windows不知道你想绘制什么东西了,高人管这种应用叫CallBack(回调),意思是你调用
windows的paint方法绘制方法,但是windows不知道要绘制什么,结果回头跟你要,你重
写了它就绘出来,不然就什么都没有一张白纸了。
然而当面向对象语言汹涌发展,各种设计模式应运大行其道,很少再有人提及Callback了,怎
么回事情,难道它消失了吗,没有它被面向对象语言换了个名字用得更加的大行其道,以致你以
为它不存在了,在Java中它就是接口。举个Java中最简单的例子,线程的Runnable接口,当
你在Java中启动一个线程时候,Java通过调用thread.start()函数来帮你实现线程的启动,但是
启动以后它执行什么JVM并需要不知道,如果你不重写run方法,就什么都不执行,原因在于
JVM并不知道你在线程里面想要干什么,而你又不能自己调度线程,线程调度依赖JVM本身实
现,所以这个是个很好的CallBack的例子,你调用start()方法让JVM执行线程,JVM回调你实
现的线程run()方法。很完美的实现!没有接口你怎么办到。
另外个很好的例子,可以很完美的诠释接口的秒用,Java编译的时候常会有包依赖关系,假设A
要依赖B,这个没问题,如果有一天你发现B中的类C居然要反过来访问A里面的类D,你傻
眼了,这样就会破坏AB之间的依赖关系,还会产生编译错误,这个时候定义接口文件E在B中,
让D继承一下,传回一个reference给C,问题很完美的解决,也许这么说比较复杂,看下图:
就这样,你还可以在D中调用C,想让C执行D的方法process()只要回传一个reference即可。
而Spring则将接口的概念更加的发扬光大,很多人接触Spring就知道一个概念依赖注入,如果
定义个接口话,然后将引用配置在xml文件中,至于你需要的那个reference的接口帮你做什么
事情,完全由你自己决定,这是一个很伟大的思想,不过是把接口与实现更加测地的分离了,这
样你再也不遇到因为包依赖关系导致的编译错误,Spring的ApplicationContext与
XMLBeanFactory对象帮你自动实现了包依赖解耦。
最后你会发现,接口本质上不过在回调函数之上批了一件华丽的外衣,想当初WIN32 API的年
代,只有Callback这种东西真的满天飞,而且现在还在飞!
- 大小: 12.9 KB
分享到:
相关推荐
Java程序调用MATLAB接口 Java 程序调用 MATLAB 接口是 Java 和 MATLAB 之间的交互接口,允许 Java 程序调用 MATLAB 的函数和方法。本文将详细介绍 Java 程序调用 MATLAB 接口的注意事项、环境安装、MATLAB 如何生成...
Java 的接口可以学习如何实现 Java 的接口,在编写实现程序的时候可以更好地使用。 在 Java 中,接口是使用 interface 关键字来定义的。接口中可以定义变量、方法、抽象方法、默认方法和静态方法等。接口的变量都是...
这些类库涵盖了输入输出、网络通信、数据处理、图形用户界面等多个领域,为开发者提供了丰富的功能和工具,使得Java程序的编写更为高效和便捷。 在Java中,接口(Interface)是一种完全抽象的类型,它只包含常量...
Java SE程序 接口中方法部分实现Java SE程序 接口中方法部分实现Java SE程序 接口中方法部分实现Java SE程序 接口中方法部分实现Java SE程序 接口中方法部分实现Java SE程序 接口中方法部分实现Java SE程序 接口中...
Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现...
Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用...
Java API接口文档模板详解 Java API接口文档模板是Java初学者必须掌握的重要知识点之一。该文档模板提供了详细的接口输入输出定义,旨在帮助前后端开发人员快速了解和使用接口。下面我们将对该文档模板进行详细解释...
Java应用程序设计接口(API,Application Programming Interface)是Java编程语言的核心组成部分,它为开发者提供了预定义的类库、方法和接口,使得开发人员能够构建高效、可移植的Java应用程序。在下册“窗口”部分...
【Java Web接口开发】是Web应用程序开发中的一个重要环节,它允许不同的系统或客户端通过网络进行数据交互。在Java世界中,实现Web接口通常涉及到Servlet、JSP、Spring MVC或者RESTful API等技术。本示例"java web...
2. **Java接口转换**:IKVM.NET提供了一个工具,可以将Java类库转换为.NET兼容的DLL。你需要使用这个工具处理你的Java接口,将其转换成.NET接口。 3. **C#调用Java接口**:在C#代码中,你可以像使用普通的.NET接口...
2. **创建Java接口**:在Java端定义一个接口,例如名为`MyJavaInterface`,并声明需要调用的方法。这些方法必须是静态的,因为非静态方法需要Java对象实例,这在Delphi中难以实现。 ```java public interface ...
这两种方式都能让Java程序调用扫描仪的驱动,完成扫描操作。 在Java中,通常会创建一个Scanner类来封装扫描仪的接口调用,包括设置扫描参数(如分辨率、色彩模式等)、启动扫描、获取扫描图像等方法。这些方法通过...
文件名为“testWeixinRefund”的可能是一个测试用例或者示例代码,它可能包含了一个完整的Java类,展示了如何调用微信退款接口的整个流程,包括加载证书、构造请求、发送请求并处理响应的代码片段。开发者可以参考这...
在"project"这个压缩包文件中,应该包含该项目的源代码,包括Java的主程序、JNI接口定义以及C++的实现。通过阅读和分析这些代码,你可以更深入地理解如何在Java中利用迅雷的下载能力。记得在实际操作时,要遵循迅雷...
Java虚拟机允许Java程序在任何安装了Java平台的系统上运行,而无需针对特定操作系统进行重新编译。 Java平台由Java虚拟机和Java应用编程接口(API)组成。Java API是一套标准化的接口库,使得开发者可以编写与操作...
Java调用SOAP(Simple Object Access Protocol)接口是Web服务交互中的常见操作,SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。本案例主要关注如何使用Java来实现SOAP请求并获取响应,具体我们...
java 嵌套接口 程序 学习java必须要学习的经典案例,加油学习把
- 库文件:可能包括JavaCard库或PC/SC相关的JAR文件,用于在Java程序中实现智能卡功能。 6. **实际应用**: - 身份验证:在登录系统、访问网络服务时,使用IC卡进行身份验证。 - 电子支付:例如公交卡、银行卡等...
Delphi 11作为一款强大的Windows桌面应用程序开发工具,有时需要与Java环境进行交互,这通常涉及到跨语言调用接口。本篇将详细介绍如何在Delphi 11中调用Java接口,并传递参数及接收返回结果。 1. **JNI(Java ...
java程序接口讲解笔记