什么是 SOLID?
在程序设计领域, SOLID 是由 Robert C. Martin(敏捷宣言作者之一,曾任敏捷联盟主席)在21世纪早期提出的便于记忆的首字母缩写,指代面向对象编程和面向对象设计的五个基本原则:单一功能、开闭原则、里氏替换、接口隔离以及依赖反转。
S - 单一职责原则
一个类只能承担一个职责。通俗点儿说就是一个类只能承担一件事,并且只能有一个潜在的原因去更改这个类,否则就违反了单一职责原则。
O - 开闭原则
软件实体应该对 扩展 开放,对 修改 关闭。允许扩展行为而无需修改源代码。
L - 里氏替换原则
程序中的对象应该可以被其子类实例替换掉,而不会影响程序的正确性。
I - 接口隔离原则
使用多个特定细分的接口比单一的总接口要好,不能强迫用户去依赖他们用不到的接口。
D - 依赖倒置原则
程序要依赖于抽象接口,而不是具体实现。
高层模块不应该依赖于低层模块,二者都应该依赖于抽象
抽象不应该依赖具体实现,具体实现应该依赖抽象
插头不应该依赖具体某种电线,它只需要有线并且能导电。
SOLID原则各自的定位和它们之间的关系。见下图:
单一职责是所有设计原则的基础,开闭原则是设计的终极目标。里氏替换原则强调的是子类替换父类后程序运行时的正确性,它用来帮助实现开闭原则。而接口隔离原则用来帮助实现里氏替换原则,同时它也体现了单一职责。依赖倒置原则是过程式设计与面向对象设计的分水岭,同时它也被用来指导接口隔离原则。