为什么写Java程序需要接口

简介: 为什么写Java程序需要接口

为什么写Java程序需要接口



我之所以以这个作为标题,并不是为了玩噱头,讲一些似是而非的空话,还是以探索加发现,


追本溯源的讲解一下为什么Java需要接口,怎么理解,怎么用它。



首先接口并不是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,问题很完美的解决,也许这么说比较复杂,看下图:


1332840350_7408.png

就这样,你还可以在D中调用C,想让C执行D的方法process()只要回传一个reference即可。



而Spring则将接口的概念更加的发扬光大,很多人接触Spring就知道一个概念依赖注入,如果


定义个接口话,然后将引用配置在xml文件中,至于你需要的那个reference的接口帮你做什么


事情,完全由你自己决定,这是一个很伟大的思想,不过是把接口与实现更加测地的分离了,这


样你再也不遇到因为包依赖关系导致的编译错误,Spring的ApplicationContext与


XMLBeanFactory对象帮你自动实现了包依赖解耦。



最后你会发现,接口本质上不过在回调函数之上批了一件华丽的外衣,想当初WIN32 API的年


代,只有Callback这种东西真的满天飞,而且现在还在飞!



我知道文字比较多,语言不够流畅,但是如果你能读懂它,真的难为你了!

相关文章
|
1月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
150 3
|
1月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
151 57
|
1月前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
87 38
|
8天前
|
数据采集 JSON Java
利用Java获取京东SKU接口指南
本文介绍如何使用Java通过京东API获取商品SKU信息。首先,需注册京东开放平台账号并创建应用以获取AppKey和AppSecret。接着,查阅API文档了解调用方法。明确商品ID后,构建请求参数并通过HTTP客户端发送请求。最后,解析返回的JSON数据提取SKU信息。注意遵守API调用频率限制及数据保护法规。此方法适用于电商平台及其他数据获取场景。
|
13天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
45 6
|
1月前
|
Java API
Java中内置的函数式接口
Java中内置的函数式接口
25 2
|
1月前
|
Java
在Java中如何实现接口?
实现接口是 Java 编程中的一个重要环节,它有助于提高代码的规范性、可扩展性和复用性。通过正确地实现接口,可以使代码更加灵活、易于维护和扩展。
77 3
|
1月前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
98 1
|
1月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
75 1
|
1月前
|
Java Android开发
Eclipse 创建 Java 接口
Eclipse 创建 Java 接口
32 1