`

[转] S.O.L.I.D.类设计原则

阅读更多

 

    本文是由敏捷宣言签署人之一,《 Clean Code(代码整洁之道)》一书的作者Robert C. Martin为他的《Applying Principles and Patterns》这本书搜集整理而来。

 

单一责任原则(SRP)

只有一个理由去修改一个类。例如,如果一个业务规则的改变会导致这个类的修改,那么,数据库、界面、报表格式或系统任何其它的部分的改变都不该迫使这个类做修改。

开发/关闭原则(OCP)

软件构成(类,模块,方法等)向扩展行为开放,向修改行为关闭。

Liskov替换原则(LSP)

子类必须能够用来当作基类使用。如果类A继承类B,任何能使用A的地方,B也同样可以使用。例如,是否还记得,正方形可以看作是矩形!当进行扩展时:前提条件不许绕过,后置条件不能放宽限制,可见常量不能被修改(?)。常量:在扩展之前或之后,用户都需要依靠这个常量来传递信息。正确的使用set形式的继承关系。不遵守set语义是非常危险的。归纳:使用超类的引用的任何上下文中也可以使用其子类的引用替代。这个原则极大的限制了在纯扩展(继承)机制里可以做的事情。不遵守会带来风险。

接口分离原则(ISP)

一个类对另一个类的依赖应该限制在最小化的接口上。

反向依赖原则(DIP)

依赖抽象层(接口),而不是具体类。

其它重要原则

Demeter定律

也被称做封锁信息原则:只跟朋友交流

一个对象O的任何一个方法M只能调用下列类型的对象的方法:

  • 它自己
  • 它的参量
  • 它创建/实例化的对象
  • 它的直接组件对象

参考

好莱坞原则

不要调用我,我会调用你的。

不要自我重复(DRY)

去掉重复代码。

对接口编程,而不是对实现

反向依赖的另外一种说法。

你不需要它(YAGNI)

不要添加你“认为以后可能有用”的代码。只在“事到临头”时才添加代码。

简单化,傻瓜化(KISS)

让它能工作的最简单的方法是什么?

[中文原文:http://www.aqee.net/s-o-l-i-d-class-design-principles/ ]
[英文原文:S.O.L.I.D. Class Design Principles ]
分享到:
评论

相关推荐

    你知道软件设计的6大原则吗?S.O.L.I.D.设计原则

    设计模式的基础是坚实的面向对象设计原则,以Robert Martin的S.O.L.I.D.设计原则为例来讲解这一点。还将介绍Martin Fowler的Patterns of Enterprise Application Architecture一书中提出的一些更高级的模式

    深入理解JavaScript系列.chm

    7.S.O.L.I.D五大原则之开闭原则OCP 8.S.O.L.I.D五大原则之里氏替换原则LSP 9.根本没有“JSON对象”这回事! 10.JavaScript核心(晋级高手必读篇) 11.执行上下文(Execution Contexts) 12.变量对象(Variable ...

    深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP

    前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle )。 英文原文:...

    深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解

    本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle)。 英文原文:...

    深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP

    前言 Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单一职责SRP) The Open/Closed Principle(开闭原则OCP) The Liskov ...

    深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解

    主要介绍了深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解,本文讲解了DIP and JavaScript、何时依赖注入等内容,需要的朋友可以参考下

    设计原则和设计模式.md

    5大设计原则:SOLID S 单一职责原则 O 开放封闭原则 L 李氏置换原则 I 接口独立原则 D 依赖倒置原则

    深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP

    本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle )。

    深入理解JavaScript系列

    深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP 深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP 深入理解JavaScript系列(9):根本没有“JSON对象”这回事! 深入理解...

    S.O.L.I.D.:Нашагближекчистойархитектуре

    S:单一责任原则(Принципединственнойответственности)。 O:开闭原理(Принципоткрытости-закрытости)。 L:Liskov替代原则(Принцип...

    asp.net 设计模式样章试读

    那些以前已经体验过设计模式的读者可能希望跳过本书的第Ⅰ部分,这部分介绍了GoF提出的设计模式以及其他常见设计原则,包括S.O.L.I.D原则和Martin Fowler的企业设计模式。所有的代码示例均采用C#语言编写,但这些...

    Unity游戏开发高级教程 第二部分 [MP4] (14.77G)

    网传资源,如有侵权请联系/留言...135.UIFrame096 k9 R4 `# o# S. w8 S 136.UIFrame10& |* r5 P, [5 C) q 137.Audio1 138.Audio2/ D- x4 J6 e0 B8 J0 P 139.Audio3' b5 c. |. B" _5 ? X/ H 140.www1 141.www2 142.www3

    OOD面试应对方法 SOLID原则.mp4

    S - Single-responsiblity principle 单一责任原则 O - Open-closed principle 开发封闭原则 L - Liskov substitution principle 里氏替换原则 I - Interface segregation principle 接口分离原则 D - Dependency ...

    ASP.NET设计模式-杨明军译(源码)

    那些以前已经体验过设计模式的读者可能希望跳过本书的第ⅰ部分,这部分介绍了gof提出的设计模式以及其他常见设计原则,包括s.o.l.i.d原则和martinfowler的企业设计模式。所有的代码示例均采用c#语言编写,但这些概念...

    民政局办公楼工程组织设计.doc

    1. 编制原则 (1)本施工组织设计作为指导施工的依据,编制时对项目管理机构设置、劳动力组织、施工进度计划控制、机械设备及周转材料配备、主要分部分项工程施工方法、工程质量控制措施、安全生产保证措施、文明施工...

    语言程序设计课后习题答案

    1-1 简述计算机程序设计语言的发展历程。 解: 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。 1-2 面向对象的编程语言有哪些...

Global site tag (gtag.js) - Google Analytics