最早总结的设计模式只有 5 个, 即SOLID
:
单一职责原则 (Single Responsibility Principle, SRP)
:一个类应该只有一个引起变化的原因,即一个类应该只有一个责任。开闭原则 (Open/Closed Principle, OCP)
:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭,即应该通过扩展来实现变化,而不是通过修改已有的代码。里氏替换原则 (Liskov Substitution Principle, LSP)
:子类型必须能够替换其基类型,即派生类必须能够替换其基类而不影响程序的正确性。接口隔离原则 (Interface Segregation Principle, ISP)
:不应该强迫客户端依赖于它们不使用的接口。应该将大接口拆分成更小的、更具体的接口,以便客户端只需知道它们需要使用的方法。依赖倒置原则 (Dependency Inversion Principle, DIP)
:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于具体实现细节,具体实现细节应该依赖于抽象。后来增加了两个规则, 这些后加的规则相较来说更具体, 更有指导性. 我们从原则解释中可以看到SOLID
描述应该怎么做
, 后加的规则描述优先/最好怎么做
.
合成/聚合复用原则 (Composition/Aggregation Reuse Principle, CARP)
:应该优先使用对象组合(合成)和聚合,而不是继承来达到代码复用的目的。迪米特法则 (Law of Demeter, LoD)
:一个对象应该对其他对象有尽可能少的了解,即一个对象应该对其它对象的内部结构和实现细节知道得越少越好。除了上述提到的常见设计原则外,还有一些其他的设计原则,虽然不如前面提到的那些广为人知,但同样对软件设计和架构有重要的指导作用。 后续提出的这些规则, 有点画蛇添足, 至少我认为它们不反直觉, 不需要深入思考.
最少知识原则 (Principle of Least Knowledge, PoLK)
:也被称为迪米特法则的扩展,主张一个对象应该尽可能少地了解其他对象的信息。这个原则的产生可以追溯到 1987 年由帕特里夏·莱塞尔( Patricia Lago )和科威特·伯克( Koos Visser )提出的“最少通信法则”。稳定依赖原则 (Stable Dependencies Principle, SDP)
:该原则认为软件设计应该确保稳定的组件不依赖于不稳定的组件,即稳定性较高的组件应该更少地依赖于稳定性较低的组件。这个原则的思想来源于对软件系统中组件之间关系的深入研究。稳定抽象原则 (Stable Abstraction Principle, SAP)
:与稳定依赖原则相呼应,该原则指导着将抽象性与稳定性相匹配,即稳定的组件应该是抽象的,而不稳定的组件应该是具体的。这个原则有助于确保软件系统的稳定性和灵活性。 1
yidinghe 173 天前 1
设计模式是什么,说白了就是一些套路。套路是会不断增加的。
|
2
me1onsoda 173 天前
唯一原则,KISS, keep it simple stupid
|
3
iosyyy 173 天前
无限 你自己也可以加一条本身设计模式只是一种实用方法的总结
|
4
zgsi 173 天前
As long as it works
|
5
lux182 173 天前
单一职责 理解这个就好了
|
6
wanguorui123 173 天前
关注点分离原则
|
8
kerwincsc 173 天前
以前有很多原则, 现在只有一个: 混沌原则
|
9
F7TsdQL45E0jmoiG 172 天前
抽象、复用
|
10
darkengine 172 天前
个人理解: 合成/聚合复用原则 和 迪米特法则 都是从 开闭原则 衍生出来的
|
11
jqknono OP @darkengine 握手,我也是同样的理解。我甚至觉得开闭原则是元原则,看上去 SLID 都有和开闭交叉的地方。
|
12
uni 172 天前
只有一个原则,那就是放弃设计模式,拥抱函数式编程(
|