`
blackchocolate
  • 浏览: 24851 次
  • 性别: Icon_minigender_2
  • 来自: 重庆
社区版块
存档分类
最新评论

为什么写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,问题很完美的解决,也许这么说比较复杂,看下图:


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



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

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

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

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

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



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

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

 

  • 大小: 12.9 KB
分享到:
评论

相关推荐

    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 SE程序 接口用对象数组实现Java SE程序 接口用对象数组实现Java SE程序 接口用...

    Java应用程序设计接口

    Java应用程序设计接口(下册)——窗口,是一本讲述JAVA接口设计方面的难得好书。对于JAVA设计很有好处

    Java接口的实现 操作

    Java 的接口 可以学习如何实现Java的接口,在编写实现程序的时候可以更好地使用

    Dubbo调用java接口程序

    Dubbo调用java接口程序

    Java程序调用MATLAB接口

    Java程序调用MATLAB接口

    java包与接口实验报告

    1)语言包(java.lang):提供的支持包括字符串处理、多线程处理、异常处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。 2)实用程序包(java.util):提供的支持包括哈希表、堆栈、可变数组、时间和日期...

    java嵌套接口程序

    java 嵌套接口 程序 学习java必须要学习的经典案例,加油学习把

    java程序接口讲解笔记

    java程序接口讲解笔记

    DELPHI 7 调用 JAVA 接口

    DELPHI 7 调用 JAVA 接口 ,传入 JAVA接口地址,和参数 返回结果

    java微信小程序支付后台接口编写.rar

    1、根据调用API必须遵循的协议规则,提交方式均采用post,提交和返回数据格式都为XML,根节点名为xml,字符统一采用UTF-8编码,签名算法使用MD5。 2、本次后台代码使用Java语言编写。由于微信支付要求传输方式必须...

    java支付宝接口程序

    java支付宝接口并且有详细说明java支付宝接口并且有详细说明java支付宝接口并且有详细说明java支付宝接口并且有详细说明java支付宝接口并且有详细说明

    JAVA练习:USB接口程序设计

    任务描述:通常人们使用的计算机上都有USB接口,鼠标、键盘、麦克风等都可以连接到USB接口中使用。在计算机启动时,这些设备也随之启动;...编写一个USB接口程序,模拟描述中的计算机的开机和关机过程。

    Java --- 方法参数为接口(子类实现接口中重写后的方法流程图)

    Java --- 方法参数为接口(子类实现接口中重写后的方法流程图)

    Java-CTP.rar_CTP PHP接口_CTP接口java_Java-CTP_ctp java_ctp-java

    上期CTP接口Java封装 可以使用该封装进行期货交易,并且可以搭建自己的程序化交易平台

    java后台接口服务程序,提升java水平

    java后台接口服务程序,提升java水平java后台接口服务程序,提升java水平java后台接口服务程序,提升java水平

    Java程序设计课程实验10-接口和多态

    Java程序设计课程实验10-接口和多态Java程序设计课程实验10-接口和多态Java程序设计课程实验10-接口和多态Java程序设计课程实验10-接口和多态Java程序设计课程实验10-接口和多态Java程序设计课程实验10-接口和多态...

    Java小程序接口上传demo

    1、解压文档后,"/tmp/模板文件.doc" 2、然后在jar包的当前路径的执行一下以下命令(前提安装了jdk1.8) 输入命令:java -Djava.ext.dirs=./lib -jar upLoadFileTestDir.jar

    Java平台 Java虚拟机 Java 应用编程接口

    Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,...

Global site tag (gtag.js) - Google Analytics