https://www.oodesign.com/dependency-inversion-principle.html
open-closed Principles
dependency inversion Principle
interface segregation Principle
Single responsibility Principle
Liskov's Substitution Principle
the Law of Demeter
https://alvinalexander.com/java/java-law-of-demeter-java-examples
核心概念:
“Only talk to your immediate friends.”
prevent you from reaching into an object to gain access to a third object’s methods
阻止你通过当前类中的一个实例对象调用其他第三方类的方法。
2. dependency inversion Principle
high level classes dependency abstraction
low level classes dependency abstraction
high level classes --> abstraction --> low level classes
5. Liskov's Substitution Principle
不要重写 父类的方法,
可以重载父类方法,但是被重写。
class A{
methodA
}
classB extends A{
methodB
}
classC extends classB{
classC想要调用 A的方法methodA, 和classB的方法 methodB
}
针对classC的需求, classB不能重写 A的methodA方法。
对修改关闭, 对扩展开放: 是对 open-closed Principle的继承。
3. interface segregation(隔离) Principle
避免在单个接口中写很多不必要的方法,
应该拆分方法到多个接口。
4. Single responsibility Principle
一个类只负责一个职责, 不同的职责要拆分到多个类。
总结:
核心思想: 对修改关闭, 对扩展开放。
把职责拆分到最小单元。
依赖倒置: 高层模块要依赖抽象, 低层模块也要依赖与抽象。