面向对象的SOLID原则       

面向对象的SOLID原则

S The Single Responsibility Principle 单一责任原则

一个类只应承担一种责任。换句话说,让一个类只做一件事。如果需要承担更多的工作,那么分解这个类。

举例

订单和账单上都有流水号、业务时间等字段。如果只用一个类表达,赋予其双重职责,后果:

特有属性和共有属性相互掺杂,难以理解;

修改一个场景可能会影响另一个场景。

正确的做法是拆成两个独立的类。

单一职责原则某种程度上说是在分离关注点。分离不同角色的关注点,分离不同时间的关注点。

O The Open Closed Principle 开放封闭原则

实体应该对扩展是开放的,对修改是封闭的。即,可扩展(extension),不可修改(modification)。

L Liskov Substitution Principle 里氏替换原则

一个对象在其出现的任何地方,都可以用子类实例做替换,并且不会导致程序的错误。换句话说,当子类可以在任意地方替换基类且软件功能不受影响时,这种继承关系的建模才是合理的。

I The Interface Segregation Principle 接口分离原则

客户(client)不应被强迫依赖它不使用的方法。即,一个类实现的接口中,包含了它不需要的方法。将接口拆分成更小和更具体的接口,有助于解耦,从而更容易重构、更改。

D The Dependency Inversion Principle 依赖倒置原则

高层次的模块不应依赖低层次的模块,他们都应该依赖于抽象。

抽象不应依赖于具体实现,具体实现应依赖抽象。

class Car {
	Wheel wheel;
	Car() {
		wheel = new Wheel();
	}
}

表明car依赖wheel,如果wheel的构造函数改变,则car也需要改动。

class Car {
	Wheel wheel;
	Car(Wheel wheel) {
		wheel = wheel;
	}
}

依赖注入,解决了wheel构造函数改变,Car也需要改动的问题

单一职责是所有设计原则的基础,开闭原则是设计的终极目标。里氏替换原则强调的是子类替换父类后程序运行时的正确性,它用来帮助实现开闭原则。而接口隔离原则用来帮助实现里氏替换原则,同时它也体现了单一职责。依赖倒置原则是过程式编程与OO编程的分水岭,同时它也被用来指导接口隔离原则

image-20210315120906228

http://www.cnblogs.com/wuyuegb2312/p/7011708.html

https://insights.thoughtworks.cn/what-is-solid-principle/