`

接口设计的 11 种原则

    博客分类:
  • java
阅读更多

7种设计坏味道
1.僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。

2.脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。

3.牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。

4.粘滞性: 做正确的事情比做错误的事情要困难。

5.复杂性(不必要的): 设计中包含有不具任何直接好处的基础结构。

6.重复性(不必要的): 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
  7.晦涩性: 很难阅读、理解。没有很好地表现出意图。

11种原则 - Principle

----类原则

1.单一职责原则 - Single Responsibility Principle(SRP)

就一个类而言,应该仅有一个引起它变化的原因。

(职责即为“变化的原因”。)

2.开放-封闭原则 - Open Close Principle(OCP)

软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。

(对于扩展是开放的,对于更改是封闭的.

关键是抽象.将一个功能的通用部分和实现细节部分清晰的分离开来.

开发人员应该仅仅对程序中呈现出频繁变化的那些部分作出抽象.

拒绝不成熟的抽象和抽象本身一样重要. )

3.里氏替换原则 - Liskov Substitution Principle(LSP)

子类型(subclass)必须能够替换掉它们的基类型(superclass)。

4.依赖倒置原则(IoCP) 或 依赖注入原则 - Dependence Inversion Principle(DIP)

抽象不应该依赖于细节。细节应该依赖于抽象。

(Hollywood原则: "Don't call us, we'll call you".

程序中所有的依赖关系都应该终止于抽象类和接口。

针对接口而非实现编程。

任何变量都不应该持有一个指向具体类的指针或引用。

任何类都不应该从具体类派生。

任何方法都不应该覆写他的任何基类中的已经实现了的方法。)

5.接口隔离原则(ISP)

不应该强迫客户依赖于它们不用的方法。

接口属于客户,不属于它所在的类层次结构。

(多个面向特定用户的接口胜于一个通用接口。)

----包内聚原则

6.重用发布等价原则(REP)

重用的粒度就是发布的粒度。

7.共同封闭原则(CCP)

包中的所有类对于同一类性质的变化应该是共同封闭的。

一个变化若对一个包产生影响,

则将对该包中的所有类产生影响,

而对于其他的包不造成任何影响。

8.共同重用原则(CRP)

一个包中的所有类应该是共同重用的。

如果重用了包中的一个类,

那么就要重用包中的所有类。

(相互之间没有紧密联系的类不应该在同一个包中。)

----包耦合原则

9.无环依赖原则(ADP)

在包的依赖关系图中不允许存在环。

10.稳定依赖原则(SDP)

朝着稳定的方向进行依赖。

应该把封装系统高层设计的软件(比如抽象类)放进稳定的包中,

不稳定的包中应该只包含那些很可能会改变的软件(比如具体类)。

11.稳定抽象原则(SAP)

包的抽象程度应该和其稳定程度一致。

(一个稳定的包应该也是抽象的,一个不稳定的包应该是抽象的. )

----其它扩展原则----

12.BBP(Black Box Principle)黑盒原则

多用类的聚合,少用类的继承。

13.DAP(Default Abstraction Principle)缺省抽象原则

在接口和实现接口的类之间引入一个抽象类,这个类实现了接口的大部分操作.

14.IDP(Interface Design Principle)接口设计原则

规划一个接口而不是实现一个接口。

15.DCSP(Don't Concrete Supperclass Principle)不要构造具体的超类原则

避免维护具体的超类。

16.迪米特法则
一个类只依赖其触手可得的类。

文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/20100719/456870.html

分享到:
评论

相关推荐

    面向对象的11个原则

    面向对象的11个设计原则 SOLID原则 单一职责原则(The Single Responsibility Principle) 开放/关闭原则(The Open Closed Principle) 里氏替换原则(The Liskov Substitution Principle) 依赖倒置原则(The Dependency ...

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

    详细描述全部(23种)设计模式与设计原则(6种)。 (一)设计原则包括: 1、开闭原则 2、里氏代换原则 3、依赖转换原则 4、接口隔离原则 5、合成/聚合复用原则 6、最少知识原则 (二)设计模式 1)工厂模式...

    Java_面向对象设计原则总结

    3 接口分隔原则-Interface Segregation Principle (ISP) 4 单一职责原则-Single Responsibility Principle (SRP) 5 开闭原则-The Open-Closed Principle (OCP)   二 包的设计原则 6 重用发布等价原则-...

    24个设计模式与6大设计原则

    26.4 接口隔离原则【INTERFACE SEGREGATION PRINCIPLE】 310 26.5 迪米特法则【LOW OF DEMETER】 320 26.6 开闭原则【OPEN CLOSE PRINCIPLE】 330 第 27 章 混编模式讲解 332 第 28 章 更新记录: 334 ...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    参阅教材例9.1 第11页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式全文共30页,当前为第11页。 单一职责原则和最少知识原则 在单一职责(Single Responsibility Principle, 简称为SRP)中,就一个类...

    联通H2接口规范

    遵循软件工程及制定协议标准的基本思想,本着接口易用、易理解、易交流的原则,为实现客服系统的规范性、开放性、扩展性、业务独立性提供保证。 [业务类型编码原则] 编码总则一:中国联通客服H接口编码标准规则满足...

    概要设计文档

    6 3.3 系统接口设计 6 3.3.1 系统接口表 6 3.3.2 系统接口传输协议说明 7 3.4 系统完整性设计 7 4. 系统出错处理设计 8 4.1 系统出错处理表 8 4.2 维护处理过程表 9 5. 技术设计 10 5.1 系统开发技术说明表 ...

    敏捷软件开发:原则、模式与实践

    第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第III部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15章 FACADE模式和...

    敏捷软件开发:原则、模式与实践.pdf

     ●面向对象设计原则:本书包含了11个面向对象设计原则,涵盖了包的设计和类的设计。这是我所见过的对这方面内容讲解的最清晰、最彻底、最深刻的唯一的一本书。  ●设计模式:本书中讲述了23个设计模式,并都有...

    Java 设计模式

    行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式遵循的原则有6个: 1、开闭原则(Open Close ...

    敏捷软件开发原则、模式与实践 C#版

    LISKOV替换原则 第11章 DIP:依赖倒置原则 第12章 ISP:接口隔离原则 第13章 写给C#程序员的UML概述 第14章 使用UML 第15章 状态图 第16章 对象图 第17章 用例 第18章 顺序图 第19章 类图 第20章 咖啡的启示 第三...

    设计模式所有实验及实验报告及代码.zip

    2GoF 的 23 种设计模式 3UML中的类图及类图之间的关系 4开闭原则 5里氏替换原则 6依赖倒置原则 7单一职责原则 8接口隔离原则 9迪米特法则 10合成复用原则 11创建型模式的特点和分类 12单例模式 13原型模式 14工厂...

    12种常用设计模式C#代码示例

    设计原则(OO原则)汇总 1、封装变化:找出应用中可能变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 2、针对接口编程,而不是针对实现编程。 3、多用组合,少用继承。 4、为了交互对象之间的送...

    微机原理及接口技术

    ·VI· 微机原理与接口技术 ·VI· 4.3.5 过程定义伪指令....................... 97 4.4 汇编语言程序的结构........................... 98 4.4.1 汇编语言程序的结构............... 98 4.4.2 程序正常返回DOS 的...

    广东移动OA系统方案设计

    3. 接口设计 14 3.1. 用户接口 14 3.2. 外部接口 19 3.3. 内部接口 19 4. 数据结构设计 21 4.1. 逻辑结构设计 21 4.2. 物理结构设计 58 4.3. 数据结构与程序的关系 59 5. 系统出错处理设计 59 5.1. 出错输出信息 59 ...

    《Java设计模式(第2版)》

    3、行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 二、设计模式遵循的原则有6个: 1、开闭原则...

    IC卡系统建设—总体设计系统

    §2 指纹、像片设计原则.11 §3 密钥管理设计原则.12 §4 卡发行单位所需系统设计原则.12 §5 卡应用部门所需系统设计原则.13 §6 应用发行的结合.13 第六章 防伪证密码系统设计原理.13 §1 概述.13 §2 IC ...

    设计模式,软件开发者必读

    1.5.4 接口隔离原则(INTERFACE SEGREGATION PRINCIPLE, ISP) 9 1.5.5 合成/聚合复用原则(CARP) 9 1.5.6 迪米特法则(LAW OF DEMETER LOD) 10 1.5.7 单一职责原则(SIMPLE RESPONSIBILITY PINCIPLE SRP) 10 创建型模式 ...

Global site tag (gtag.js) - Google Analytics