科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件面向接口设计

面向接口设计

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

面向接口设计

作者:韩小明 来源:CSDN 2008年1月6日

关键字: 设计 接口 面向

  • 评论
  • 分享微博
  • 分享邮件
我在网上搜索这个概念的时候,发现在中国还很少有此类文章,外国有一本同名书籍出版,但是无缘拜读。所以这个概念基本是我自己杜撰出来的,只是网上也有同名而已。
       先说说,什么是接口。这是个老问题,可是在设计之前,必须先将此定义清楚。
       一个常见的定义是,接口就是契约。我认为这个定义非常模糊。契约是约定双方的有一定法律或道德效应的说明。但是,第一,中国人不常定契约,所以不是很能理解其中精髓。第二,此定义还是没有定义出接口的内容特征,因此很多人看了这个定义,还是不理解接口。此定义可以是不合国情,不合民意。
       我更倾向于将接口定义为职责(或角色、能力)。职责就是在某种情况下被赋予的权力和义务。在社会应用领域中,使用角色的概念更能深入人心。在英文中使用Role单词。而在普遍意义下,能力大家也能接受。
       让我们打个比方。在面向对象分析中,我们分析出来一个人的对象。在其中,我们假定一个实例为韩小明,那么韩小明这个对象应该实现多少个接口呢?
       他在公司上班,需要编写代码,因此必须拥有编码的能力。有时候还要参加设计,因此必须同时拥有设计能力。他有了家庭,必须有对家庭负责的能力。有了妻子,要有作为丈夫的能力。当然了,上面的这些能力也可以理解为角色。软件工程师、架构师、丈夫、孩子、父亲等等。
       对于韩小明这样一个人(对象),他身上同时拥有多个角色,那么就要实现这么多接口吗?那就要看我们的业务领域涉及哪些了。如果我们只关心他的工作情况,那么也只会涉及软件工程师和架构师这两种角色(接口)。
       面向接口设计,就在这个时候开始发挥作用了。
       在UML设计中,其实也涉及到了,关于接口的设计,那就是Role,只是没有专门对Role本身进行设计,只是作为一种关系存在而已。方法都转移到了对象上面。在一定意义上,导致接口的设计被人忽略。
       重新捋一下我们在做OOA/OOD的过程,分析出对象,静态分析出对象的属性,动态(建模)分析出对象的方法。如果我们将接口的分析和设计过程加入其中,那么我们的流程就变成:分析出对象,分析出属性、分析出接口(角色、能力),分析出方法。接口这个集合处于类和方法之间,恰好是一个非常好的分析工具。
       至于面向接口设计的一些原则和方法,相信又将是一篇非常精彩的文章。
       在我们还没有被一些新的概念淹没之前,重新看看我们最基本的软件设计,我们经常会发现一些意想不到的收获。面向接口设计如此,其他也是如此。希望这些收获也能对你有所帮助。
 
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章