Java 面向对象的 6 大基本原则
Java 面向对象的 6 大基本原则
- SOLID 原则,旨在帮助开发者编写更加可维护、可扩展和可重用的代码,SOLID 意思是可靠的、良好的、坚固的和稳定的,方便记忆,额外可能还有个 CRP 合成复用原则
- SRP 单一职责原则
- OCP 开放封闭原则
- LSP 里氏替换原则
- ISP 接口隔离原则
- DIP 依赖倒置原则
- LOD 迪米特法则(LKP 最少知识原则)
Single Responsibility Principle 单一职责原则
- 一个类只负责一件事,即一个类应该只负责一项职责、功能,应该有且只有一个去改变它的原因、理由,推荐将复杂的类分解为更小、更专注的类,从而提高代码的可读性和可维护性,是 SOLID 所有原则的基础和解决问题的基本思路
Open Closed Principle 开放封闭原则
- 软件实体(如类、模块、函数等)应该对扩展开放,对修改封闭,可以去扩展(添加)属性和功能,但是不要直接修改已有的属性和方法,当需要添加新功能时,应该通过扩展现有代码的方式来实现,而不是直接修改现有的代码,所以要尽量多考虑接口封装抽象,这个原则有助于保持现有代码的稳定性和可靠性,同时降低维护成本,是面向对象设计最核心的原则
Liskov Substitution Principle 里氏替换原则
- 子类应该能够替换父类并且不影响程序的正确性,这意味着子类的对象应该能够在不改变程序期望行为的情况下,替换掉父类的对象,这个原则强调了继承关系的正确使用,避免引入潜在的错误
Interface Segregation Principle 接口隔离原则
- 应该创建多个粒度小的接口,而不是搞一个大而全的接口,让实现类只需要关心它们真正需要的接口,这个原则有助于减少不必要的依赖,提高代码的灵活性和可维护性
Dependency Inversion Principle 依赖倒置(反转)原则
- 高层模块不应该依赖于低层模块,二者都应该依赖于抽象,而抽象不应该依赖于具体实现,具体实现应该依赖于抽象,所以要使用依赖注入和接口编程,以降低代码的耦合提高代码的可测试性
Law of Demeter Principle 迪米特法则
- 又叫 LKP 最少知识原则(Least Knowledge Principle),一个对象应该对其他对象有尽可能少的了解,只和直接相关的对象进行交互,不和陌生对象交互
Composite Reuse Principle 合成复用原则
- 也叫组合 / 聚合复用原则,在复用软件组件时应该优先采用对象组合(has-a)或聚合(contains-a)的方式,而不是通过继承来实现