有关接口编程,很多人认为是十分有意义的:面向接口编程能够更好的适应需求的变化,避免Bug的产生。本文总结接口编程的好处。
接口编程相信大家都知道是怎么回事,下面主要对接口编程的好处进行一些总结。
在项目中的意义:
在传统的项目开发过程中,由于客户的需求经常变化,如果不采用面向接口编程,那么我们必须不停改写现有的业务代码。改写代码可能产生新的BUG,而且改写代码还会影响到调用该业务的类,可能全都需要修改,影响系统本身的稳定性。而且为了将改写代码带来的影响最小,我们不得不屈服当前的系统状况来完成设计,代码质量和稳定性更低。当这种情况积累到一定程度时,系统就会出现不可预计的错误,代码凌乱,不易读懂,后接手的人无法读懂代码,系统的维护工作越来越重,最终可能导致项目失败。
接口在项目就是一个业务逻辑,面向接口编程就是先把客户的业务提取出来,作为接口。业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件(例如Spring框架)中该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。
采用基于接口编程的项目,业务逻辑清晰,代码易懂,方便扩展,可维护性强。即使更换一批人员,新来的人依然可以快速上手。对于公司来说,意义更大。
在Java中的意义:
Java本身也是一个不断完善的语言,他也在频繁的改动他的系统API来完善,他的API是一个庞大的体系,互相关联,如果不采用接口,而都是用实现类的话,那么API的改动就会给整个体系带来不稳定。而且如果改动API,那么就会有大量采用旧API的项目因无法正常运行,会损失大量客户。换句话说,JDK已经发布的API是一种承诺,一经发布就不能更改,即使原来API存在各种各样的问题(例如java.util.Properties类就是一个失败的例子)也必须保留,于是在Java里就出现了不建议使用的方法,但JDK依然提供该方法。而且Java语言本身是一个跨平台的语言,为了满足在各个平台下运行,就必须把各种操作做成接口,在编写各个平台下的实现类。
设计模式的体现:
在设计模式的原则里的开闭原则,其实就是要使用接口来实现对扩展开放,对修改关闭。在设计模式的其他原则里也有关于基于接口编程的原则,即依赖倒转的设计原则(DIP)----高层模块不应该依赖于底层模块。二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象(注:来自《敏捷软件开发--原则、模式与实践》Robert C.Martin著)。在使用面向接口的编程过程中,将具体逻辑与实现分开,减少了各个类之间的相互依赖,当各个类变化时,不需要对已经编写的系统进行改动,添加新的实现类就可以了,不在担心新改动的类对系统的其他模块造成影响。
编程也是一门艺术,在C语言中灵活的使用指针是一门艺术,在面对对象的程序中,灵活的使用接口也是一门艺术。现在项目中,功能越来越复杂,只设计了完美的类,对于整个系统来说没有多大意义,现在的项目更注重各个功能模块的整合及可维护性,接口的设计就显得更为重要了。程序设计不再是设计类的具体实现,而是从整个项目出发,设计出可扩展性强的接口。当你发现越来越灵活的使用接口时,那么你就从程序员升级为架构师了。可惜我现在依然是一名程序员,正在像架构师努力。
在一些大型项目或者大型公司里,都是由架构师编写出系统接口,具体的实现类交给了程序员编写,公司越大这种情况越明显,所以在这些公司里做开发,我们可能都不知道编写出的系统是个什么样子,每天做的工作可能就是做“填空题”了。建议大家阅读敏《捷软件开发--原则、模式与实践》Robert C.Martin著这本书,那么对如何进行接口编程就会有一个新的认识了。
最后,希望大家都能成为一个优秀的系统架构师。
我记得我曾经在一篇帖子中提到过,一个接口可以从三方面去考察:
制定者(或者叫协调者),实现者(或者叫生产者),调用者(或者叫消费者)。
接口本质上就是由制定者来协调实现者和调用者之间的关系。
所以通常说的“面向接口编程”可以理解为:
只有实现者和调用者都遵循“面向接口编程”这个准则,制定者的协调目的才能达到。
一个老生常谈的例子就是JDBC。
优点:
接口和实现分离了,适于团队的协作开发。
更具体的优点:可以参看IDP原则。
缺点:
设计难了,在你没有写实现的时候,就得想好接口,接口一变,全部乱套,这就是所谓的设计比实现难。
所以设计接口的人工资都高啊!!!
分享到:
相关推荐
标题《多种语言混合编程的探讨_浅谈VC与VB的混合编程》以及描述“从VB与VC混合编程的问题,做了一些探索,并采用动态链接库的方法举例说明了如何利用VB与VC进行混合编程”提及的知识点非常丰富,将围绕以下几个方面...
3. **VB与Matlab接口**:通过MATLAB Compiler,Matlab可以生成可被其他编程语言调用的DLL或.NET组件,使得VB能够直接调用Matlab编写的函数和脚本,实现两者的混合编程。 4. **COM接口**:Matlab支持通过COM...
本文将深入探讨C#接口技术的运用及其对完善面向对象编程的意义。 1. **接口的定义与使用** - 接口使用`interface`关键字来声明,它由一组公共成员(如方法、属性、索引器和事件)组成,这些成员默认都是抽象且公开...
### 医院信息化多系统接口的探讨与实践 #### 摘要 随着信息技术的不断发展,医院信息系统(HIS)的构建与优化已成为提升医疗服务质量和效率的重要手段之一。然而,当前许多医院的信息系统仍处于相对孤立的状态,...
通过上述编程技巧的探讨,可以看出,深入学习和应用C语言在51单片机上的编程,并非仅仅涉及编程语言本身,还涉及对51单片机硬件结构、开发工具以及外部设备接口的综合掌握。在这一过程中,不断实践和积累经验,可以...
这篇文章主要探讨了如何利用MATLAB和UG软件进行复杂型面数控加工编程的问题,详细阐述了在数控加工领域,尤其是涉及到复杂型面产品加工时,如何通过编程解决造型设计和数控编程的困难。 首先,文章指出数控加工是...
- **面向对象编程的优点与局限**:客观评价面向对象编程的优势与不足之处。 - **其他编程范式的探索**:介绍函数式编程、命令式编程等其他编程范式的特点及其适用场景。 - **混合编程风格**:探讨如何结合多种编程...
《基于Labview与Matlab混合编程的应用研究》这篇论文探讨了如何将Labview与Matlab结合,实现两者的混合编程,以达到优势互补,提高编程效率和系统仿真的效果。Labview是一种图形化编程语言,主要用于虚拟仪器的开发...
本文将深入探讨这一系列编程器的核心特点,以及与CH314A编程器的关联。 首先,24-25系列编程器支持的芯片涵盖了I2C接口的24CXX系列和SPI接口的25XXX系列。24CXX系列通常用作微控制器的外部数据存储,如配置参数、...
4. **对接口编程才是真正的编程**:通过接口编程可以实现松耦合的设计,使得程序更加灵活和易于维护。 5. **对数据的描述才是数据**:数据不仅仅是一些数值或字符的集合,更重要的是它们所代表的意义及其在特定上下...
### 五、案例分析:基于汇编语言的接口编程 #### 1. 案例背景 假设我们需要设计一个简单的输入输出(I/O)接口控制系统,使用汇编语言来实现对某个外设的操作控制。 #### 2. 实现步骤 - **定义端口地址**:首先确定I...
《微博WEB接口研究与实现》这篇毕业论文详细探讨了在计算机科学领域中,尤其是在网络工程专业内,如何利用微博的Web接口进行数据交互和功能扩展。微博作为一种社交媒体平台,其Web接口是开发者与微博系统之间的重要...
本文将对使用模式编程进行详尽的总结,探讨设计原则、接口编程、设计模式的优势以及观察者模式的应用。 首先,设计原则是指导软件开发的核心准则。封装变化是其中一项基本的原则,通过将可能变化的部分封装起来,...
《基于VB与MATLAB接口手机辐射预测系统仿真界面的实现》这篇文章主要探讨了如何结合VB(Visual Basic)和MATLAB的各自优势,构建一个用于预测手机辐射的仿真系统界面。文章作者郭遂峰和张雅歌指出,MATLAB虽然具备...
在本文档中,作者史贵才和葛修润探讨了面向对象方法在有限元分析中的应用,并通过VC++与Matlab的混合编程实现了三维脆塑性有限元分析软件。 首先,面向对象编程(Object-Oriented Programming,简称OOP)的核心思想...
《微机原理与接口技术》是一门深入探讨计算机硬件与软件之间交互的学科,它涵盖了微型计算机的基础结构、工作原理以及如何通过接口技术实现不同设备之间的通信。这门课程通常作为计算机科学或电子工程专业的重要课程...
本文详细探讨了基于LabVIEW与MATLAB混合编程的自抗扰控制系统设计与仿真。自抗扰控制技术(ADRC)是一种新型实用的控制方法,由韩京清研究员提出,通过使用特殊的非线性效应,不依赖于被控对象的精确数学模型。在...