我在网上搜索这个概念的时候,发现在中国还很少有此类文章,外国有一本同名书籍出版,但是无缘拜读。所以这个概念基本是我自己杜撰出来的,只是网上也有同名而已。
先说说,什么是接口。这是个老问题,可是在设计之前,必须先将此定义清楚。
一个常见的定义是,接口就是契约。我认为这个定义非常模糊。契约是约定双方的有一定法律或道德效应的说明。但是,第一,中国人不常定契约,所以不是很能理解其中精髓。第二,此定义还是没有定义出接口的内容特征,因此很多人看了这个定义,还是不理解接口。此定义可以是不合国情,不合民意。
我更倾向于将接口定义为职责(或角色、能力)。职责就是在某种情况下被赋予的权力和义务。在社会应用领域中,使用角色的概念更能深入人心。在英文中使用Role单词。而在普遍意义下,能力大家也能接受。
让我们打个比方。在面向对象分析中,我们分析出来一个人的对象。在其中,我们假定一个实例为韩小明,那么韩小明这个对象应该实现多少个接口呢?
他在公司上班,需要编写代码,因此必须拥有编码的能力。有时候还要参加设计,因此必须同时拥有设计能力。他有了家庭,必须有对家庭负责的能力。有了妻子,要有作为丈夫的能力。当然了,上面的这些能力也可以理解为角色。软件工程师、架构师、丈夫、孩子、父亲等等。
对于韩小明这样一个人(对象),他身上同时拥有多个角色,那么就要实现这么多接口吗?那就要看我们的业务领域涉及哪些了。如果我们只关心他的工作情况,那么也只会涉及软件工程师和架构师这两种角色(接口)。
面向接口设计,就在这个时候开始发挥作用了。
在UML设计中,其实也涉及到了,关于接口的设计,那就是Role,只是没有专门对Role本身进行设计,只是作为一种关系存在而已。方法都转移到了对象上面。在一定意义上,导致接口的设计被人忽略。
重新捋一下我们在做OOA/OOD的过程,分析出对象,静态分析出对象的属性,动态(建模)分析出对象的方法。如果我们将接口的分析和设计过程加入其中,那么我们的流程就变成:分析出对象,分析出属性、分析出接口(角色、能力),分析出方法。接口这个集合处于类和方法之间,恰好是一个非常好的分析工具。
至于面向接口设计的一些原则和方法,相信又将是一篇非常精彩的文章。
在我们还没有被一些新的概念淹没之前,重新看看我们最基本的软件设计,我们经常会发现一些意想不到的收获。面向接口设计如此,其他也是如此。希望这些收获也能对你有所帮助。
分享到:
相关推荐
《Interface Oriented Design》是一本专注于接口导向设计的书籍,主要探讨如何在软件开发中有效利用接口来提高代码的灵活性、可维护性和可扩展性。该书由Pragmatic Bookshelf出版,出版时间为2006年6月,是设计模式...
面向对象设计(Object-Oriented Design, OOD)是软件工程领域中的一个重要分支,它强调通过对象来构建系统,并利用类、继承、封装、多态等机制来组织和管理代码。《面向对象设计知识:原则、启发式方法与最佳实践》...
根据提供的文件信息,“Head First Object-Oriented Design and Analysis”这本书主要聚焦于面向对象的设计与分析,这是一本深入浅出、易于理解的学习材料,旨在帮助读者掌握面向对象(Object-Oriented,简称OO)的...
面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件开发过程中关键的两个阶段,它涉及到对问题域的深入理解以及创建一个能够反映这些理解的模型。本章节主要讨论了统一建模语言(Unified ...
面向对象设计(Object-Oriented Design,简称OOD)是一种软件设计方法,它基于“对象”的概念,通过将数据和操作这些数据的方法封装在一起,来构建复杂的软件系统。本压缩包包含了一份由外国人编写的关于面向对象...
它包括类的设计(Class Design),接口的设计(Interface Design),以及类与类、类与接口之间的关系设计,如继承(Inheritance)、聚合(Aggregation)和组合(Composition)。此外,还要考虑模式的应用,如工厂...
面向对象设计(Object-Oriented Design, OOD)是一种软件设计方法,它将复杂的问题分解成一系列相互协作的对象,使得代码更易于理解、维护和扩展。 在Java中,面向对象设计的核心原则包括封装、继承、多态和抽象。...
面向对象设计(Object-Oriented Design,简称OOD)是软件工程中的一种重要设计方法,它以对象为中心,通过封装、继承和多态等机制来构建软件系统。在面试中,了解并能应用面向对象设计的经验原则是评估候选人技术...
面向对象设计(Object-Oriented Design,OOD)紧接着分析阶段,它关注于如何将分析结果转化为具体的设计模型。在这个阶段,设计师会细化类图,考虑多态(Polymorphism)、抽象(Abstraction)和设计模式的应用。设计...
面向对象设计(Object-Oriented Design,简称OOD)是一种软件设计方法,它强调将复杂系统分解为简单的、相互协作的对象。在面向对象编程中,遵循一定的设计原则是非常重要的,这些原则有助于提高系统的可维护性、可...
面向对象设计与分析(Object-Oriented Design and Analysis, OOD&A)是软件工程领域中的重要概念,UML(Unified Modeling Language)则是用于可视化、规格化和构建软件系统的一种标准化建模语言。本教程旨在深入讲解...
面向对象设计(Object-Oriented Design,OOD)是基于面向对象编程思想的一种设计方法,它将现实世界中的实体抽象为类,类的实例则代表对象。在这个门禁系统中,我们可以识别出几个关键的类,如用户、门禁设备、权限...
面向对象设计(Object-Oriented Design,简称OOD)是一种广泛应用于软件工程领域的设计方法,它以对象为中心,通过封装、继承和多态等机制来构建复杂的软件系统。本篇文章将详细探讨面向对象设计的基本原则,这些...
面向对象设计(Object-Oriented Design,OOD)是一种软件设计方法,它基于现实世界中的对象和它们之间的交互关系来进行软件系统的设计。UML(Unified Modeling Language,统一建模语言)是面向对象设计的重要工具,...
面向接口编程是Spring推崇的设计原则之一,它强调将实现细节隐藏在接口背后,从而降低了模块间的耦合。通过定义接口,客户端代码只需要与接口交互,而不直接依赖具体实现。这样,当需要更换实现时,只需修改配置,而...
面向对象分析与设计(Object-Oriented Analysis and Design, 简称OOAD)是软件开发过程中的关键步骤,它结合了模型驱动工程(Model-Driven Engineering)与统一建模语言(Unified Modeling Language, UML)等现代...
在IT行业中,面向对象设计(Object-Oriented Design, OOD)是一种常用的设计方法论,尤其在Java这样的面向对象编程语言中。门禁系统作为一项关键的安全管理设施,其设计通常涉及用户验证、权限控制等多个模块,非常...
面向对象设计(Object-Oriented Design,简称OOD)是一种软件设计方法,它基于面向对象编程的概念,强调将现实世界的问题转化为计算机程序的解决方案。在面向对象设计中,我们通过类和对象来组织代码,以便更好地...
面向对象设计(Object-Oriented Design,简称OOD)是一种软件设计方法,它将现实世界中的实体抽象为对象,通过对象之间的交互来实现系统的功能。在本PDF文档中,重点介绍了如何使用面向对象的设计原则和技巧来构建一...