`

面向对象设计(OOD)11原则

阅读更多
面向对象编程的基本原则

    这些原则着重于OOD中的依赖管理方面,而淡化抽象与建模方面。这并不是说OO在抽象方面不够强大,或是OO不适合构建模型。当然有很多人都在使用OO的这些部分,只是这些原则集中关注于依赖管理。

     依赖管理是我们每个人都要面对的问题,每当我们在屏幕面前打开那些彼此纠结又令人作呕的代码,我们就会遭受不良的依赖管理所带来的恶果。不良的依赖管理导致代码难以改变,易被破坏,而且不可重用。实际上,我在PPP一书中谈论过很多不同的设计坏味道,而这些都与依赖管理有关。从另一方面来说,如果依赖经过了良性的管理,代码就可以保持灵活性、健壮性和重用性。所以依赖管理和这些相关原则是程序员们渴求的让软件保持优良架构的基石。

头五项原则是关于类设计的,它们是:

SRP,单一职责原则,一个类应该有且只有一个改变的理由。
OCP,开放封闭原则,你应该能够不用修改原有类就能扩展一个类的行为。
LSP,Liskov替换原则,派生类要与其基类自相容。
DIP,依赖倒置原则,依赖于抽象而不是实现。
ISP,接口隔离原则,客户只要关注它们所需的接口。

另外的六项是关于包的设计原则。在本文中,包是指一个二进制的可发布文件,比如.jar文件、或dll文件,而不是Java包或是C++的命名空间.头三项包原则是关于包内聚性的,它们会告诉我们该把什么划分到包中:
REP,重用发布等价原则,重用的粒度就是发布的粒度。
CCP,共同封闭原则,包中的所有类对于同一类性质的变化应该是共同封闭的。 
CRP,共同重用原则,一个包中的所有类应该是共同重用的。

最后的三项原则是关于包之间的耦合性原则的,并且论述了评价系统中包结构优良与否的评判标准。
ADP,无环依赖原则,在包的依赖关系图中不允许存在环。
SDP,稳定依赖原则,朝着稳定的方向进行依赖。
SAP,稳定抽象原则,包的抽象程度应该和其稳定程度一致。


译注:
  命名空间,原文为namespace,也译作名字空间。它是一种特殊的作用域,它包含了处于该作用域内的所有标示符,且本身也用一个标示符来表示,这样便于将一系列在逻辑上相关的标示符用一个标示符来组织。就Java编程语言来说,命名空间是通过java包来表达的,所有代码都归属与一个包。来自其他包中的代码要通过指定包名来引用某项特定的标示符,例如,包java.lang中的String类要通过java.lang.String的形式引用。在C++中,命名空间常用来避免命名冲突,尽管现今的C++语言对命名空间做出了扩展,但过去的C++代码很少使用此项功能。

(原文链接网址:http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod; Robert C. Martin的英文blog网址: http://www.butunclebob.com/ArticleS.UncleBob)

作者简介:Robert C. Martin是Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。Martin是Pattern Languages of Program Design 3和More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。

来源:Robert C. Martin的中文blog http://blog.csdn.net/rmartin/archive/2006/09/28/1299516.aspx
分享到:
评论

相关推荐

    面向对象设计OOD 面向对象设计OOD

    OOD 面向对象设计原则与实践 面向对象设计(OOD)是一种软件设计方法,旨在提高软件系统的灵活性、可维护性和可扩展性。OOD 的核心是面向对象设计原则(OOD principles),其中包括单一职责原则(SRP)、开闭原则...

    2018年最新 OOD面向对象设计专题班.zip

    2018年最新OOD面向对象设计专题班的资料,显然聚焦于教授这一核心技能,帮助学员深入理解和应用面向对象设计原则。 面向对象设计的基础是封装、继承和多态三大特性。封装使得数据和操作数据的方法紧密结合,保护了...

    OOD设计基本原则 面向对象设计必备

    OOD 设计基本原则是面向对象设计的根本原则,它们指导我们如何设计一个高质量的系统,使其具有高可维护性和高复用性。OOD 设计基本原则包括 OCP 原则、里氏替换原则、依赖倒置原则、接口隔离原则、聚合与继承原则、...

    面向对象设计OOD收集.pdf

    面向对象设计(Object-Oriented Design,简称OOD)是一种软件设计方法,它将现实世界中的实体抽象为对象,通过对象之间的交互来实现系统的功能。在本PDF文档中,重点介绍了如何使用面向对象的设计原则和技巧来构建一...

    面向对象设计的基本原则

    面向对象设计(Object-Oriented Design,简称OOD)是一种广泛应用于软件工程领域的设计方法,它以对象为中心,通过封装、继承和多态等机制来构建复杂的软件系统。本篇文章将详细探讨面向对象设计的基本原则,这些...

    面向对象设计UML实践课后答案

    面向对象设计(Object-Oriented Design,OOD)是一种软件开发方法,它基于“对象”的概念,将现实世界的问题域转化为计算机程序。UML(Unified Modeling Language)是面向对象设计的一种标准化建模语言,用于可视化...

    面向对象设计原则

    面向对象设计(Object-Oriented Design,简称OOD)是一种软件设计方法,它强调将复杂系统分解为简单的、相互协作的对象。在面向对象编程中,遵循一定的设计原则是非常重要的,这些原则有助于提高系统的可维护性、可...

    面向对象设计理论

    下面将详细阐述面向对象设计的基本概念、原则以及在两个文档——"面向对象分析与设计"和"面向对象的思考过程"中可能涵盖的关键知识点。 1. **面向对象的基本概念**: - **对象**:对象是类的实例,具有属性(数据...

    面向对象设计的SOLID原则 .docx

    SOLID 原则是面向对象设计和编程(OOD&OOP)中几个重要编码原则的首字母缩写,分别是单一责任原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口分离原则。这些原则是非常基础而且重要的面向对象设计原则,理解...

    面向对象设计的基本原则和实践建议

    面向对象设计(Object-Oriented Design,简称OOD)是一种广泛应用于软件工程领域的设计方法论,它基于对象的概念,强调数据和操作数据的方法相结合。在面向对象设计中,我们遵循一些核心的原则,这些原则有助于创建...

    面向对象的设计原则详解

    在面向对象设计(OOD)中,遵循这些原则可以帮助我们构建更加稳定、灵活的系统。以下是对这些原则的详细解释: 1. 单一职责原则(Single Responsibility Principle, SRP): 这个原则要求每个类只负责一个职责或...

    61条面向对象设计的经验面试题

    面向对象设计(Object-Oriented Design,简称OOD)是软件工程中的一种重要设计方法,它以对象为中心,通过封装、继承和多态等机制来构建软件系统。在面试中,了解并能应用面向对象设计的经验原则是评估候选人技术...

    面向对象设计原则资料

    面向对象设计(Object-Oriented Design,OOD)遵循一系列指导原则,帮助开发者创建结构良好、易于理解和维护的软件系统。这些原则包括但不限于抽象化、封装、继承和多态等。文件的部分内容展示了其中的两个关键原则...

    java 门禁系统的面向对象设计

    在IT行业中,面向对象设计(Object-Oriented Design,简称OOD)是一种常用的设计方法论,尤其在Java这样的面向对象编程语言中尤为重要。本篇将详细探讨如何使用Java进行门禁系统的面向对象设计。 门禁系统是用于...

    swift-面向对象设计的设计原则和设计模式

    在Swift编程语言中,面向对象设计(Object-Oriented Design, OOD)是构建软件系统的一种常见方法。设计原则和设计模式是OOD的核心概念,它们为开发者提供了指导思想和最佳实践,以创建可维护、可扩展和易于理解的...

    软件工程基础课件 chapter 08面向对象设计(OOD).ppt

    面向对象设计(Object-Oriented Design,简称OOD)是软件工程中的一个重要环节,它基于面向对象的方法论,目的是将需求分析阶段得到的分析模型转化为具体的设计模型,从而为软件开发提供蓝图。OOD的主要目标在于提高...

    OOD设计基本原则整理.doc

    要实现“开-闭”原则,需要在面向对象设计中,不允许更改的是系统的抽象层(抽象类或接口),尽量少修改原需求的实现层(已运行的实现类),而允许扩展的是新需求的实现层(增加新的实现类)。解决问题的关键在于...

    实用面向对象软件工程教程

    本教程“实用面向对象软件工程教程”旨在深入探讨面向对象分析(OOA)和面向对象设计(OOD)的关键原则,帮助开发者构建高质量、可维护的软件系统。 在面向对象分析阶段,我们首先理解问题域,识别出关键实体和它们...

Global site tag (gtag.js) - Google Analytics