设计模式 - 设计原则

2017-10-10  本文已影响12人  小菜_charry

1. 单一职责原则

Single Responsibility Principle,简称SRP.

这个设计原则备受争议, 只要你想和别人争执、 怄气或者是吵架, 这原则是屡试不爽的。 如果你是老大,看到一个接口或类是这样或那样设的,你就问一句: “你设计的类符合SRP原则吗? ”保准对方立马“萎缩”掉, 而且还一脸崇拜地看着你, 心想: “老大确实英明”。

单一职责原则的定义是: 应该有且仅有一个原因引起类的变更。
单一职责原则在实际中很难做到,我们只能尽量满足.
接口一定要做到单一职责, 类的设计尽量做到只有一个原因引起变化。

2. 里氏替换原则

Liskov Substitution Principle, 简称 LSP

通俗点理解就是:
只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。 但是, 反过来就不行了, 有子类出现的地方, 父类未必就能适应。

3. 依赖倒置原则

Dependence Inversion Principle,简称 DIP

High level modules should not depend upon low level modules.Both should depend upon abstractions.Abstractions hould not depend upon details.Details should depend upon abstractions.
翻译过来, 包含三层含义:

一句话 面向接口编程

用张图来表示就是:要尽量避免左边的情况,而使用右边的.


依赖倒置原则.png

依赖的方式:

依赖倒置原则在小项目中得不到很好的体现,而在大项目则是很好的利器!

4. 接口隔离原则

简单来说就是:
建立单一接口, 不要建立臃肿庞大的接口

它跟单一职责原则容易混淆,到底是单一职责原则还是接口隔离原则,区别是他们站的角度不同:

我们要做是:
根据接口隔离原则拆分接口时, 首先必须满足单一职责原则。

5. 迪米特法则

迪米特法则(Law of Demeter, LoD) 也称为最少知识原则(Least Knowledge Principle, LKP)
定义:一个对象应该对其他对象有最少的了解

理解:

暴露的public方法越少越好.png 只和朋友交流.png

6. 开闭原则

这是六个原则中最重要的一个设计原则!如果把其他五个原则比喻为是西安类的话,这个原则就是他们的抽象类!

前五个原则就是指导设计的工具和方法, 而开闭原则才是其精神领袖。

Software entities like classes,modules and functions should be open for extension but closed for modifications.(一个软件实体如类、 模块和函数应该对扩展开放, 对修改关闭。 )

实现开闭原则的方式有很多,比较普遍的是通过扩展一个类的方式(extends),这样可以复写原有的方法又不会对原有的类造成影响!

为什么要开闭原则?

如何实现开闭原则?

设计原则只是些原则,我们只能尽量遵循,实现过程中还要具体问题具体分析,一句话「尽量遵循设计原则」

上一篇下一篇

猜你喜欢

热点阅读