面向接口设计(Interface Oriented Design)
来源:互联网 发布:算法收敛是什么意思 编辑:程序博客网 时间:2024/05/18 08:25
2006年11月25日 00:05:00
我在网上搜索这个概念的时候,发现在中国还很少有此类文章,外国有一本同名书籍出版,但是无缘拜读。所以这个概念基本是我自己杜撰出来的,只是网上也有同名而已。
先说说,什么是接口。这是个老问题,可是在设计之前,必须先将此定义清楚。
一个常见的定义是,接口就是契约。我认为这个定义非常模糊。契约是约定双方的有一定法律或道德效应的说明。但是,第一,中国人不常定契约,所以不是很能理解其中精髓。第二,此定义还是没有定义出接口的内容特征,因此很多人看了这个定义,还是不理解接口。此定义可以是不合国情,不合民意。
我更倾向于将接口定义为职责(或角色、能力)。职责就是在某种情况下被赋予的权力和义务。在社会应用领域中,使用角色的概念更能深入人心。在英文中使用Role单词。而在普遍意义下,能力大家也能接受。
让我们打个比方。在面向对象分析中,我们分析出来一个人的对象。在其中,我们假定一个实例为韩小明,那么韩小明这个对象应该实现多少个接口呢?
他在公司上班,需要编写代码,因此必须拥有编码的能力。有时候还要参加设计,因此必须同时拥有设计能力。他有了家庭,必须有对家庭负责的能力。有了妻子,要有作为丈夫的能力。当然了,上面的这些能力也可以理解为角色。软件工程师、架构师、丈夫、孩子、父亲等等。
对于韩小明这样一个人(对象),他身上同时拥有多个角色,那么就要实现这么多接口吗?那就要看我们的业务领域涉及哪些了。如果我们只关心他的工作情况,那么也只会涉及软件工程师和架构师这两种角色(接口)。
面向接口设计,就在这个时候开始发挥作用了。
在UML设计中,其实也涉及到了,关于接口的设计,那就是Role,只是没有专门对Role本身进行设计,只是作为一种关系存在而已。方法都转移到了对象上面。在一定意义上,导致接口的设计被人忽略。
重新捋一下我们在做OOA/OOD的过程,分析出对象,静态分析出对象的属性,动态(建模)分析出对象的方法。如果我们将接口的分析和设计过程加入其中,那么我们的流程就变成:分析出对象,分析出属性、分析出接口(角色、能力),分析出方法。接口这个集合处于类和方法之间,恰好是一个非常好的分析工具。
至于面向接口设计的一些原则和方法,相信又将是一篇非常精彩的文章。
在我们还没有被一些新的概念淹没之前,重新看看我们最基本的软件设计,我们经常会发现一些意想不到的收获。面向接口设计如此,其他也是如此。希望这些收获也能对你有所帮助。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1413244
- 面向接口设计(Interface Oriented Design)
- 面向接口设计(Interface Oriented Design)
- 面向接口设计(Interface Oriented Design)
- 面向接口设计(Interface Oriented Design)
- Object-Oriented Game Design(面向对象游戏设计)
- Object Oriented Design面向对象设计
- Interface-Oriented Design
- Interface-Oriented Design (Pragmatic Programmers)
- Object-Oriented Game Design (面向对象的游戏设计)
- Object Oriented Design Principles 面向对象设计原则
- OOD - Object Oriented Design 面向对象设计实例
- [翻译] Effective C++, 3rd Edition, Chapter 6. Inheritance(继承)和 Object-Oriented Design(面向对象设计)
- 基于数据的设计(Data-oriented design)
- 面向对象设计原则:接口隔离原则(The Interface Segregation Principle)
- OOD(object oriented design)
- 面向对象设计原则(Object-Oriented Principle)
- (Effective C++)第六章 继承与面向对象(Inheritance and Object-Oriented Design)
- 软件模型设计基础-接口(Interface)
- ANT-build.xml文件详解
- HOOK启思录---前言:HOOK是一种思想
- HOOK启思录---第一章 HOOK的发展
- HOOK启思录---第二章 HOOK的根源
- 接口是AS出来的
- 面向接口设计(Interface Oriented Design)
- 接口设计之误区
- 也谈西直门桥的设计
- HOOK启思录---第三章 HOOK的应用模式
- 原来汉语的思路更接近计算机语言
- 如何使用EditPlus调试Perl程序
- 借火车看设计过程
- 网站设计的25条利于排名的建议
- 堆和栈的区别