在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解、灵活和可维护。
这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原则的子集,
在他2000年的论文《设计原则与设计模式》中首次提出。
SOLID 原则包含:
S:单一职责原则(single-responsibility principle)
一个类或者模块只负责完成一个职责(或者功能),
避免一个类负责多个功能领域,提高类的可读性、可维护性、可扩展性。
O:开闭原则(open-closed principle)
软件实体应当对扩展开放,对修改关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。
L:里氏替换原则(Liskov substitution principle)
继承必须确保父类所拥有的性质在子类中仍然成立。
I:接口隔离原则(Interface segregation principle)
使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
D:依赖倒置原则(Dependency inversion principle)
高层模块不应依赖于低层模块,两者应该依赖于抽象。
抽象不不应该依赖于实现,实现应该依赖于抽象。
要依赖于抽象,不要依赖于具体。实现类之间的依赖通过抽象(接口或抽象类)进行,避免类之间的高耦合。
后来业界又扩展出两条原则:
迪米特法则(Law of Demeter,LoD)或最少知道原则(Least Knowledge Principle,LKP):一个对象应当对其他对象保持最少的了解,降低类之间的耦合度。
合成复用原则(Composite Reuse Principle,CRP):尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。
下面是勇哥对7大原则的白话,如有不妥之处请指正:
单一职责原则
为啥电脑的键盘鼠标显示器不合并成一根线?那样鼠标坏了,整条线都要换
开闭原则
一国两制,坚持社会主义不动摇
里氏替换原则
可以青出于蓝胜于蓝,但是祖传的东西不能变
接口隔离原则
智能手机适合年轻人,但不适合老年人
依赖倒置原则
不要按轮胎->底盘->车身来设计汽车,应该反过来
迪米特法则
只和朋友交流;朋友的事不要知道得太多。
合成利用原则
狗生狗,不可能生出会爬树的狗
其它类比: 阶级固化(农民儿子还是农民,律师儿子还是律师,不会有什么跨阶层的可能);
一个罗卜一个坑(只有红罗卜青罗卜的区别,微小变化,不可变身为一颗白菜 )
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

