`
picluo
  • 浏览: 334995 次
  • 性别: Icon_minigender_1
  • 来自: 大力亚
社区版块
存档分类
最新评论

接口编程的好处

阅读更多

在项目中的意义:
在传统的项目开发过程中,由于客户的需求经常变化,如果不采用面向接口编程,那么我们必须不停改写现有的业务代码。改写代码可能产生新的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原则。


缺点:
设计难了,在你没有写实现的时候,就得想好接口,接口一变,全部乱套,这就是所谓的设计比实现难。
所以设计接口的人工资都高啊!!!

2
0
分享到:
评论
2 楼 chian_xxp 2010-04-30  
精辟哈。学习了
1 楼 leeyi1988 2009-09-15  
上面的字太小了,

相关推荐

    浅谈Java面向接口编程

    本文通过结合接口的本质、面向对象编程与面向接口编程的关系以及一些作者自身的理解,向大家介绍了面向接口编程的一些东西,需要的朋友可以了解下。

    面向接口的编程

    如何进行面向接口和面向抽象编程,这种编程的最大好处是带来系统更加灵活,更易扩展

    ADO编程技术En.pdf

    ADO是微软公司的适用于各种类型数据的重要的高层接口。一个使用ADO的应用程序可以通过OLE数据库提供者访问和处理数据库服务器中的数据。ADO主要的好处是容易使用、高速、占用很少的额外内存,并且用磁盘空间很小。...

    Tcl_TK编程权威指南pdf

    Tcl_TK编程权威指南pdf 内容简介回到顶部↑Tcl/Tk是第一种能通过Windows、Macintosh和Solaris等主要平台处理企业级任务的脚本语言。本书共分为55章,依次详细讲述了Tcl基础、Tcl高级特性、TK基础、TK组件、TK详解、...

    XML高级编程

    这就是把数据与显示实现分离开来的好处。第14章(WAP)也包含在显示主线当中,因为样式化对于小型设备来说是一种很重要的选择,而小型设备是无线通信的主要用户。它帮助设计者解决如何压缩可视化内容以适应非常小的...

    spring+struts2+hibernate框架说明

    Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate对JDBC进行了非常...

    servlet-api.jar

    当然这个jar的接口是按照servlet规范编写的,面向标准接口编程的好处就是我们开发出的一个web工程即可以部署到tomcat、也可以部署到weblogic或其他servlet容器下运行,所有的servlet容器都使用了相同接口所以我们...

    程序员编程语言开发手册

    occi参考,用于C++编程时可以用的API接口文档。希望能够给大家带来好处。

    易语言-动态多态编程的好处及简单例子

    所以,用父类的指针指向子类,是为了面向接口编程。大家都遵循这个接口,弄成一样的,到哪里都可以用。 3,提高程序的可复用性,提高可扩充行和可维护性,一个接口,多种实现,各自不同. 动态多态的基础知识: 首先...

    网络编程和并发编程的框架EventMachine.zip

    这种模式的好处就是清晰的分离了时间分发和处理事件的应用程序逻辑,而不需引入多线程来把代码复杂化。 EventMachine提供了一个网络套接字和隐藏底层操作的高层接口。EventMachine: 拥有极高的可伸缩性、性能...

    NET平台插件技术的实现,完整项目

    想过要把窗体控件封装到dll里面吗,想过这样实现会有什么好处吗,想过接口编程吗,好吧,本文为你 解答这些困惑! 以前我只知道把一个窗体项目属性改成输出类库(也是一个dll,嘻嘻),然后用assembly类反射,也...

    Android 4游戏编程入门经典

     7.8 索引顶点:重用是有好处的  7.8.1 代码整合  7.8.2 vertices类  7.9 半透明混合处理  7.10 更多图元:点、线、条和扇  7.11 2d变换:操作模型视图矩阵  7.11.1 世界空间和模型空间  7.11.2 再次讨论...

    Java 基础之面向对象编程教程

    Java 基础之面向对象编程教程,主要类和对象、如何定义类、成员函数、访问控制修饰符、构造方法、类变量、类方法、方法重载、方法覆盖、抽象、封装、继承、多态、抽象类、接口和New 运算符等概念的介绍和例题介绍...

    多线程编程指南PDF

    多线程的益处.............................................................................................................................................17 提高应用程序的响应.............................

    Java数据编程指南

    【丛 书 名】 乐思公司编程指南系列 <br>http://images.china-pub.com/ebook/5221/shupi.jpg<br><br>Java是一种功能强大的编程平台,带有大量的Application Programming Interfaces(APIs,应用程序编程接口)...

    C++模板元编程

    元编程大的特点在于:某些用户自定义的计算可以在编译期进行,二者通常能够在性能和接口简单性方面带来好处。  1. 利用模板特化机制实现编译期条件选择结构  首先了解一下类模板的特化。类模板特化是指将模板...

    Spring学习笔记

    面向接口编程(面向抽象编程) 什么是IOC(DI),有什么好处 Spring简介 Spring IOC配置与应用 什么是AOP Spring AOP配置与应用 Spring整合Hibernate Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    对学习java的人极有好处,分享给大家,希望大家能够喜欢

    DBA组件---ADO数据库编程利器

    DBA组件---ADO数据库编程利器 ... 它的好处在于使数据库的编程和维护都仅仅在表现层,便于数据库字段的反复增减,修改(客户需求无常),使代码更为规范, 也使得程序的总体代码减少,运行效率提高。

Global site tag (gtag.js) - Google Analytics