java

位置:IT落伍者 >> java >> 浏览文章

Java语言深入--什么叫面向接口编程


发布日期:2018年03月10日
 
Java语言深入--什么叫面向接口编程

在一个面向对象的系统中系统的各种功能是由许许多多的不同对象协作完成的在这种情况下各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键小到不同类之间的通信大到各模块之间的交互在系统设计之初都是要着重考虑的这也是系统设计的主要工作内容面向接口编程我想就是指按照这种思想来编程吧!实际上在日常工作中你已经按照接口编程了只不过如果你没有这方面的意识那么你只是在被动的实现这一思想;表现在频繁的抱怨别人改的代码影响了你(接口没有设计到)表现在某个模块的改动引起其他模块的大规模调整(模块接口没有很好的设计)等等

Booch先生那天谈到Interaction Designer它就是指做这类设计的人只不过层次更高一些我想目前我们的软件设计队伍中这类人是最缺乏的人才之一

非接口编程?是不是就是面向过程的编程思想?

关于接口的理解

接口从更深层次的理解应是定义(规范约束)与实现(名实分离的原则)的分离

我们在一般实现一个系统的时候通常是将定义与实现合为一体不加分离的我认为最为理解的系统设计规范应是所有的定义与实现分离尽管这可能对系统中的某些情况有点繁烦

接口的本身反映了系统设计人员对系统的抽象理解

接口应有两类第一类是对一个体的抽象它可对应为一个抽象体(abstract class);

第二类是对一个体某一方面的抽象即形成一个抽象面(interface);

一个体有可能有多个抽象面

抽象体与抽象面是有区别的

设计接口的另一个不可忽视的因素是接口所处的环境(contextenvironment)系统论的观点环境是系统要素所处的空间与外部影响因素的总和任何接口都是在一定的环境中产生的因此环境的定义及环境的变化对接口的影响是不容忽视的脱离原先的环境所有的接口将失去原有的意义

按照组件的开发模型(C)它们三者相辅相成各司一面浑然一体缺一不可

面向对象是指我们考虑问题时以对象为单位考虑它的属性及方法

面向过程是指我们考虑问题时以一个具体的流程(事务过程)为单位考虑它的实现

接口设计与非接口设计是针对复用技术而言的与面向对象(过程)不是一个问题

我认为UML里面所说的interface是协议的另一种说法并不是指com的interfaceCORBA的interfaceJava的interfaceDelphi的interface人机界面的interface或NIC的interface

在具体实现中是可以把UML的interface实现为语言的interface分布式对象环境的interface或其它什么interface但就理解UML的interface而言指的是系统每部分的实现和实现之间通过interface所确定的协议来共同工作

所以我认为面向interface编程原意是指面向抽象协议编程实现者在实现时要严格按协议来办也就是Bill Joy同志说的一边翻rfc一边写代码的意思面向对象编程是指面向抽象和具象抽象和具象是矛盾的统一体不可能只有抽象没有具象一般懂得抽象的人都明白这个道理 但有的人只知具象却不知抽象为何物

所以只有interface没有实现或只有实现而没有interface者是没有用的反OO的

所以还是老老实实面向对象编程面向协议编程或者什么都不面向老老实实编程

但是我很讨厌讨论这样的术语不如我们谈谈什么叫面向领导的编程?面向用户的编程?领导和用户有时都很BT我们就面向BT编程?

上一篇:我的第一个Java Midlet

下一篇:Java输入输出流详解