根据 【动力节点】最新Spring框架教程,全网首套Spring6教程,跟老杜从零学spring入门到高级 以及老杜的原版笔记 https://www.yuque.com/docs/share/866abad4-7106-45e7-afcd-245a733b073f?# 《Spring6》 进行整理, 文档密码:mg9b
Spring 相关文章整理汇总归纳于:https://www.yuque.com/u27599042/zuisie
OCP 开闭原则
- OCP 开闭原则是软件七大开发原则当中最基本的一个原则
- OCP 开闭原则:
- 在软件开发过程中应当对扩展开放,对修改关闭。
- 在软件开发过程中,通过添加额外的类对原先程序已有的功能进行扩展是没问题的,但是如果因为要进行功能扩展而修改之前运行正常的程序,这是不被允许的。
- 因为一旦修改之前运行正常的程序,那么项目整体就要进行重新测试,这会导致额外的开销和资源消耗,并且测试过程相当麻烦。
- OCP 开闭原则是最核心的、最基本的,其他的六个开发原则都是为这个原则服务的。
- 是否违反 OCP 开闭原则的判断:
- 只要你在扩展系统功能的时候,没有修改以前写好的代码,那么你就是符合 OCP 原则的。
- 反之,如果在扩展系统功能的时候,你修改了之前的代码,那么这个设计是失败的,违背了OCP原则。
依赖倒置原则
- 依赖倒置原则,就是不再显示的建立类之间的关联关系,而是面向接口编程,面向抽象编程,不要面向具体编程,从而降低程序的耦合度,提高程序的扩展力,增强代码复用性
- 依赖倒置原则的目的:降低程序的耦合度,提高程序的扩展力,增强代码复用性
- 是否符合依赖倒置原则:
- 上 不依赖 下,就是符合,即类的实例对象之间没有明确固定在代码中的依赖关系
- 上 依赖 下,就是违背。只要“下”一改动,“上”就受到牵连。
- 符合依赖倒置原则的编程思想:控制反转
控制反转
- 当前程序的设计,显然既违背OCP,又违背DIP,可以采用“控制反转”这种编程思想来解决这个问题。
- 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计思想,可以用来降低代码之间的耦合度,符合依赖倒置原则。
- 由于控制反转思想出现的比较新,所以没有被纳入GoF23种设计模式范围内。
- 控制反转的核心思想:
- 将对象的创建权交出去
- 将对象和对象之间关系的管理权交出去
- 对象的创建和对象之间关系的维护都由第三方容器来负责
- 控制反转中的反转是两件事:
- 第一件事:不在程序中采用硬编码的方式来new对象了,将new对象的权利交出去
- 第二件事:不在程序中采用硬编码的方式来维护对象的关系了,对象之间关系的维护权交出去了
- 控制反转思想的实现:依赖注入
依赖注入
- 控制反转的实现方式有多种,其中比较重要的叫做:依赖注入(Dependency Injection,简称DI)。
- 依赖注入,用于实现对象之间关系的建立
- 控制反转是思想。依赖注入是这种思想的具体实现。
- 依赖注入DI,又包括常见的两种方式:
- 第一种:set注入(执行set方法给属性赋值)
- 第二种:构造方法注入(执行构造方法给属性赋值)
- 依赖注入 中 “依赖”是什么意思? “注入”是什么意思?
- 依赖:A对象和B对象的关系。
- 注入:是一种手段,通过这种手段,可以让A对象和B对象产生关系。
- 依赖注入:对象A和对象B之间的关系,靠注入的手段来维护。而注入包括:set注入和构造注入。
术语小结
- OCP:开闭原则(开发原则)
- DIP:依赖倒置原则(开发原则)
- IoC:控制反转(一种思想,一种新型的设计模式)
- DI:依赖注入(控制反转思想的具体实现方式)