介绍
面向对象编程有6大基本原则,也叫“SOLID原则”,它是大家从工程实践中总结出来的经验。这些原则都是为软件工程服务的,遵守这些原则,对于你写代码而言,并不影响代码的正确性,而是关乎合理性。正像单词“SOLID”表达的,遵守这些原则可以帮助你构建“稳固可靠”的项目工程。
这6大基本原则是:(首字母SOLIDD,两个D合并就成了SOLID)
- Single Responsibility Principle 单一职责原则
- 定义:一个类应该只有一个引起它变化的原因。
- 关键点:职责分离,每个类专注于单一职责。
- Open/Close Principle 开闭原则
- 定义:软件实体(类,模块,函数等)应该对扩展开放,对修改关闭。
- 关键点:通过扩展而非修改实现变化,增强软件的可维护性和可复用性。
- Liskov Substitution Principle 里氏替换原则
- 定义:子类必须能够替换掉它们的父类。
- 关键点:子类行为必须与父类兼容,客户端可以无需知道是父类还是子类实例。
- Interface Segregation Principle 接口隔离原则
- 定义:客户端不应该依赖它不需要的接口。
- 关键点:设计更小、更具体的接口,避免大而全的接口。
- Dependency Inversion Principle 依赖倒置原则
- 定义:高层模块不应该依赖低层模块,二者都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。
- 关键点:依赖抽象而非具体实现,通过接口或抽象类编程。
- Demeter Law 迪米特法则
- 定义:一个对象应该对其他对象有最少的了解。
- 关键点:减少对象之间的耦合,每个对象只和朋友交谈,不和朋友的朋友交谈。
这6大原则在实际生产过程中的生动实践就是“设计模式”。“设计模式”最初就是由美国四位著名的软件工程学者(被称为“四人帮”或GoF)提出的,于1994年发表。这些模式后来被收录在他们1995年出版的《设计模式:可复用面向对象软件的基础》一书中,包含23种设计模式。这些设计模式都是软件开发中经过验证的解决方案,可以帮助开发者避免重复发明轮子,提高开发效率和软件质量。
感悟
- 软件工程是对“凡人”友好的。如果你是天才程序员,一个工程从头到尾你一个人全部能搞定,可能你写一个巨大的函数,把所有的事情全部做了,所有逻辑都在你脑子里面,这行不行?这当然可以,甚至不管从性能上还是开发效率上来说,这可能是效率最高的方式。但是我们是“凡人”啊,我们需要软件工程,需要模块化,把项目不断地拆解,拆到我们普通人能够驾驭地复杂度。英语有句话叫“tame complexity”,驯服复杂度,就是这个意思。
- 了解这么多原则,其实都回归到一个关键字上“解耦”。简单说就是,我在开发一个东西的时候,你那边随便改,不会影响到我。