目录
一:SRP 单一职责原则 Single Responsibility Priciple
二:OCP 开闭原则 Open Close Principle 让程序更稳定灵活
三:LSP 里氏替换原则 Liskov Substitution Principle 让程序扩展性更好
四:DIP 依赖倒置原则 Dependence Inversion Principle
五:ISP 接口隔离原则 InterfaceSegregation Principles
六:LOD 迪米特原则 Law of Demeter 更好的扩展
一:SRP 单一职责原则 Single Responsibility Priciple
一个类中应该是一组相关性很高的函数、数据的封装,不一样的功能不应该放到一个类中。如何划分一个类、一个函数的职责可能还需要根据具体业务和个人经验而定。也就是功能范围的界定并不是绝对的。
二:OCP 开闭原则 Open Close Principle 让程序更稳定灵活
软件中的对象(类、模块、函数等)对于扩展应该是开放的,但是,对于修改是封闭的。而遵循开闭原则的重要手段应该是通过抽象。开发中尽可能的通过继承的方式来升级、维护原有系统。当然,在实际的开发过程中,修改原有代码、扩展代码往往是同时存在的。
三:LSP 里氏替换原则 Liskov Substitution Principle 让程序扩展性更好
所有引用基类的地方必须能透明地使用其子类的对象,反之不然。
面向对象的语言的三大特点是:封装、继承、多态,里氏替换原则就是依赖于继承、多态这两大特性。核心原理是抽象,通过抽象建立规范,处理业务时用具体实现替换抽象(依赖注入),保证系统的高扩展性和灵活性;抽象又依赖于继承这个特性。
开闭原则和里氏替换原则往往是生死相依、不弃不离的,通过里氏替换来达到对扩展开放,对修改关闭的效果。然而,这两个原则都同时强调了一个OOP的重要特性—抽象,因此,在开发过程中运用抽象是走向代码优化的重要一步。
四:DIP 依赖倒置原则 Dependence Inversion Principle
代指一种特定的解偶形式,指模块间的依赖抽象,而不依赖具体实现,其依赖关系是通过接口或抽象类产生的,也就是面向接口或抽象类编程。
- (1)高层模块不应该依赖低层模块,两者都应该依赖其抽象(接口/抽象类);
- (2)抽象不应该依赖细节(实现类);
- (3)细节应该依赖抽象。
五:ISP 接口隔离原则 InterfaceSegregation Principles
客户端不应该依赖它不需要的接口,或者说:类间的依赖关系应该建立在最小的接口上。接口隔离原则将非常庞大、臃肿的接口拆分成为更小的和更具体的接口。
六:LOD 迪米特原则 Law of Demeter 更好的扩展
也称为最少知识原则(Least Knowledge Principle),即:一个对象应该对其他对象有最少的了解。一个类应该对自己需要耦合或调用的类知道得最少,类的内部如何实现、如何复杂都与调用者或者依赖者没关系,调用者或者依赖者只需要知道他需要的方法即可,至于方法的内部实现是完全不需要关心的。类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。
特别感谢:https://blog.csdn.net/bboyfeiyu/article/details/50103471