`
javatar
  • 浏览: 1700760 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

[转]包设计原则

 
阅读更多
粒度:包的内聚性原则
1) 重用发布等价原则(The Release Reuse Equivalency Principle (REP))
* 重用的粒度就是发布的粒度
* 一个可重用的包必须为发布跟踪系统所管理,使我们在新版本发布后我们还可以继续使用老版本
* 一个包中的所有类对于同一类用户来讲都应该是可重用的。

2) 共同重用原则(The Common Reuse Principle (CRP))
* 一个包中的所有类应该是共同重用的,如果重用了包中的一个类,就应该重用包中的所有类。
* 一般来说,可重用的类需要与作为该可重用抽象一部份的其它类协作,CRP规定了这些类应该属于同一个包。
* 放入同一包中的所有类应该是不可分开的,其它包仅仅依赖于其中一部份情况是不可能的(不允许的),否则,我们将要进行不必要的重新验证与重新发布,并且会白费相当数量的努力。(一个包依赖于另外一个包, 哪怕只是依赖于其中的一个类也不会削弱其依赖关系)
* CRP倾向于把包做的尽可能的小

3) 共同封闭原则(The Common Closure Principle (CCP))
* 包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中所有类产生影响,而对于其他的包不造成任何影响。
* 这是单一职责原则对于包的重新规定。
* CCP鼓励我们把可能由于同样的原因而更改的所有类共同聚集在同一个地方。将变化限制在最小数据的包中。
* CCP倾向于将包做的尽可能的大。
* CCP有益于维护者(包的作者),而REP和CRP有益于重用者(包的使用者)。

稳定性:包的耦合性原则
4) 无环依赖原则(The Acyclic Dependencies Principle (ADP))
* 在包的依赖关系图中不允许存在环。
* 包的依赖关系图应该是一个有向无环图(DAG(Directed Acyclic Grphic))
* 存在环的系统,很难确定包的构建顺序,事实上,并不存在恰当的构建顺序。
* 打破环的第一个方法:依赖倒置原则,使一个包不再依赖于另一个包,而只是依赖于其抽象接口。
* 打破环的第二个方法: 创建一个新包来包含公共依赖部份。

5) 稳定依赖原则(The Stable Dependencies Principle (SDP))
* 朝着的稳定的方向进行依赖
* 你设计了一个易于更改的包, 其它人只要创建一个对它的依赖就可以使它变的难以更改,这就是软件的反常特性。通过遵循SDP可以避免这种情况。
* 不稳定性度量:I = Ce / (Ca + Ce). Ca: Afferent Coupling. Ce: Efferent Coupling
* SDP规定一个包的I度量值应该大于它所依赖的包的I的度量值,也就是说,I的度量值应该顺着依赖的方向减少。

6) 稳定抽象原则(The Stable Abstractions Principle (SAP))
* 包的抽象程度应该和其稳定程度一致。
* 一个稳定的包同时应该是抽象的,这样,其稳定性就不会导致其无法扩展。一个不稳定的包应该是具体的,这样,因为其不稳定性使得其内部的具体代码易于修改。
* 抽象性度量:A = Na / Nc Na: Number of classes. Nc:Number of abstract classes.
* 创建一个以A为纵轴,I为横轴的坐标图,最稳定,最抽象的包位于左上角(0,1)处, 那些最不稳定,最具体的包位于右下角(1,0)处。
分享到:
评论
1 楼 lishichao1002 2016-12-05  
[flash=200,200][url][img][list]
[*]
引用
[u][i][b][/b][/i][/u]
[/list][/img][/url][/flash]
  

相关推荐

    设计模式与设计原则.pdf

    本文件《设计模式与设计原则.pdf》中,将详细地探讨设计模式以及与之相关的六大设计原则。 首先,设计模式主要分为三类: 1. 创建型模式(Creational patterns):这些模式提供了一种在创建对象的同时隐藏创建逻辑...

    设计模式(23种)与设计原则(6种)

    设计模式和设计原则是软件开发中的重要概念,它们旨在提高代码的可读性、可维护性和复用性。设计模式是一套成熟的、被广泛接受的解决方案,用来解决常见的设计问题。设计原则则提供了指导思想,帮助开发者遵循良好的...

    数据库设计原则14法则

    以下是关于“数据库设计原则14法则”的详细解析: 1. 原始单据与实体之间的关系:数据库设计时,需要考虑原始数据源(如业务表格)与实体表之间的映射。通常,一张原始单据对应一个实体,但也有特殊情况,如一对一...

    数据仓库维度建模设计原则及应用

    ### 数据仓库维度建模设计原则及应用 #### 摘要 随着信息技术的发展,数据仓库技术作为企业管理和决策支持的关键工具,在数据集成和分析方面扮演着至关重要的角色。维度建模作为一种主流的数据仓库构建方法,其核心...

    24种设计模式介绍与6大设计原则

    ### 24种设计模式与6大设计原则 #### 一、设计模式概述 设计模式是一种在特定情境下解决问题的方法论。它不是一种具体的代码实现,而是一种指导思想,可以帮助软件开发者更好地组织代码,提高软件的灵活性、复用性...

    24种设计模式介绍与6大设计原则PDF 高清版本

    本资源包含的"24种设计模式介绍与6大设计原则"高清PDF,对于Java开发者来说是一份宝贵的参考资料。 首先,我们来逐一探讨这24种设计模式: 1. 单例模式:确保一个类只有一个实例,并提供全局访问点。 2. 工厂方法...

    RESTful-API设计原则与规范

    ### RESTful-API设计原则与规范 #### 一、背景与基础概念 RESTful架构作为一种流行的互联网软件架构,因其结构清晰、符合标准、易于理解和扩展等特点而受到广泛青睐。REST(Representational State Transfer)的...

    jar包转换dex和smali文件工具

    `.dex`文件是专门为Dalvik虚拟机设计的,它是Android系统执行代码的基础。当一个Android应用被构建时,所有的`.jar`和`.aar`库都会被转化成`.dex`文件,并包含在APK中。 `dx`工具是Android SDK自带的一个命令行工具...

    转向系统毕业设计论文.zip

    3. 转向系统设计原则: 设计转向系统时,需考虑以下几个原则:操纵轻便性、稳定性与直线行驶性能、转向灵敏度、可靠性和耐用性。这些原则在设计过程中通过精确计算和试验来达到最佳平衡。 4. CAD图绘制: 在毕业...

    61条面向对象设计的经验原则

    ### 61条面向对象设计的经验原则 面向对象设计(Object-Oriented Design,简称OOD)是软件工程中的一种常用方法论,它强调通过抽象、封装、继承和多态等特性来组织代码结构,实现软件模块化。下面将对61条面向对象...

    接口设计原则和方法.docx

    ### 接口设计原则和方法 #### 设计原则 1. **充分理由**:创建新的接口之前,必须确保其存在有充分的理由。这意味着接口的设计应当基于明确的需求而非随意为之。无意义的接口不仅增加系统的复杂性和维护成本,还...

    java面向对象设计原则(带书签高清晰pdf)

    ### Java面向对象设计原则 #### 一、面向对象设计原则概览 面向对象设计原则是在软件开发过程中确保代码质量、可维护性和可扩展性的指导方针。遵循这些原则可以帮助开发者写出更加健壮、灵活且易于理解的代码。...

    Dubbo框架设计原则ppt

    【标题】"Dubbo框架设计原则ppt"与【描述】"dubbo框架设计Java并发ppt"揭示了本次讨论的核心——Dubbo框架的设计原则以及在Java并发环境中的应用。这两个主题对于理解和优化分布式服务架构至关重要。 首先,让我们...

    java编写原则.txt

    开放封闭原则、里氏替换原则、依赖倒置原则以及接口隔离原则共同构成了面向对象设计的核心理念,指导着开发者如何设计和组织代码,以应对不断变化的业务需求和技术挑战。遵循这些原则,不仅可以提高代码的重用性和...

    数据库设计原则.docx

    以下是对标题和描述中提到的数据库设计原则的详细说明: 1. 原始单据与实体之间的关系:在数据库设计中,原始单据通常对应于业务过程中的基本数据单元,而实体则是这些数据在数据库中的抽象表现。一对一、一对多和...

    实体转换为ER图的一般原则

    在数据库设计中,遵循这些原则有助于创建清晰、准确的ER图,这进一步指导了关系数据库的逻辑设计和物理设计。通过ER图,设计师能够更好地理解数据结构,识别实体之间的关系,并确保数据的完整性和一致性。在实施这些...

Global site tag (gtag.js) - Google Analytics