S.O.L.I.D.类设计原则

转载 2013年12月03日 16:01:24

本文是由敏捷宣言签署人之一、《 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)

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

类设计的5个基本原则

我们常说啥面向对象三大特性:封装,继承,多态.另一种说法是:抽象,继承,动态绑定 然后就是面向对象五大设计原则,面向对象的设计其实说到底就是类的设计嘛,没有了类就自然不能叫面向对象了.当然了像C#中还...
  • weiwenhp
  • weiwenhp
  • 2013年03月15日 03:49
  • 11071

C++类设计原则

面向对象和与面向过程的比较 l 对象使数据和成员函数之间的结合更加紧密,更加有意义; l 对象更便于查找错误,因为操作都只局限于它们的对象; l 对象可以对其他对象隐藏某些操作细节,从而使得这些...
  • daoming1112
  • daoming1112
  • 2017年01月09日 23:26
  • 324

类和接口的设计原则

类和接口是Java语言的核心,也是基本抽象单元。遵循以下的原则,可以帮助我们设计出有用、健壮和灵活的类和接口。...
  • csdn_timosang
  • csdn_timosang
  • 2015年08月20日 21:10
  • 201

设计模式的预备知识:类图与设计原则

1 UML类图(转自:http://blog.csdn.net/tianhai110/article/details/6339565)在UML类图中,常见的有以下几种关系: 泛化(Generaliza...
  • cds86333774
  • cds86333774
  • 2016年03月22日 12:05
  • 326

数据库规范化设计的五个原则

一:表中应该避免可为空的列; 二:表不应该有重复的值或者列; 三: 表中记录应该有一个唯一的标识符    在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个ID号来 唯一的标识...
  • u013181313
  • u013181313
  • 2014年11月20日 19:43
  • 863

面向对象设计的五项基本原则

面向对象设计(OOD)是面向对象编程(OOP)必不可少的一个环节,只有好的设计,才能保障程序的质量。面向对象设计的主要任务就是类的设计,不少面向对象(OO)的先驱和前辈已经提出了很多关于类的设计原则,...
  • K346K346
  • K346K346
  • 2017年02月13日 22:28
  • 430

OO设计五大原则

OO的五大原则是指SRP、OCP、LSP、DIP、ISP 1. SRP(Single Responsibility Principle 单一职责原则)  单一职责很容易理解,所谓单一职...
  • u014117094
  • u014117094
  • 2015年07月08日 23:13
  • 778

PHP设计模式——六大原则

声明:本系列博客参考资料《大话设计模式》,作者程杰。       一般认为遵从以下六大原则的代码是易扩展可复用的代码:                                      ...
  • jhq0113
  • jhq0113
  • 2015年04月06日 23:18
  • 3252

java开发设计六大基本原则

目录(?)[+] 1.遵循单一职责原则 一个类只专注于做一件事;  高内聚,低耦合; 2.开放-封闭原则 对拓展开放,对修改关闭(尽可能不动原...
  • AlbenXie
  • AlbenXie
  • 2017年05月17日 12:32
  • 678

面向对象设计的三个基本要素与五种主要设计原则

一、三个基本特征 面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事...
  • Green_shing
  • Green_shing
  • 2014年03月14日 17:25
  • 2152
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:S.O.L.I.D.类设计原则
举报原因:
原因补充:

(最多只允许输入30个字)