Spring学习笔记1 启示录

写段代码,引出Spring的好处

创建个空工程,然后在工程里建模块

可能是IEAD版本问题,每次建新的空工程,都需要退出重进

设置下maven和Encoding

新建模块

持久层接口

持久层实现类

业务层接口

业务层实现类

控制层(表现层)

建个测试类测试

分析这个程序存在的问题

假设现在新需求是因某种原因需要改变Dao层的实现类

并且在业务层将原先的对象改变成new UserDaoImplForOracle()

这种修改方法,去修改了以前运行正常的代码

违背了OCP开闭原则

软件开发七大原则(所有语言开发软件):
OCP原则:在软件开发过程中应当对扩展开放,对修改关闭。
OCP是最核心,最基本的,其他六个原则都是为这个原则服务的.
OCP开闭原则核心:只要你在扩展系统功能的时候.没有修改以前写好的代码,那么你就是符合OCP原则.反之,如果在扩展系统功能的时候,修改了之前的代码,那么这个设计是失败的,违背了OCP原则.
这里还违背了依赖倒置原则(DIP原则)
依赖倒置原则倡导面向接口编程,面向抽象编程,不要面向具体编程
让上层不再依赖下层,下⾯改动了,上⾯的代码不会受到牵连 。这样可以⼤⼤降低程
序的耦合度,耦合度低了,扩展⼒就强了,同时代码复⽤性也会增强。( 软件七⼤开发原则都是在为解耦合服务 )

我们希望看到的效果是

但实际出现的问题是,这么写都是null

抛开null的问题,程序这么设计:

1.不再关心具体指向的对象是谁,面向接口编程(DI依赖注入)

2.将创建具体对象的权力交出去(IOC控制反转)

控制反转(IOC Inversion of Control)

1.不在程序中采用硬编码的方式来new对象.(new对象不管了,交出去了)

2.不在程序中采用硬编码的方式维护对象关系。(对象之间关系的维护,不管了,交出去了)

控制反转:是一种编程思想.或者叫做一种新型的设计模式.由于出现的比较新,没有纳入GoF23种设计模式范围内.

Spring框架:通过DI依赖注入实现IOC控制反转

控制反转实现方式有多种.其中比较重要的叫做:依赖注入(Dependency Injection,简称:DI)

控制反转IOC是思想,依赖注入DI是控制反转的实现

依赖注入DI常见两种注入方式:

1.Set注入:执行set方法给属性赋值

2.构造方法注入:执行构造方法给属性赋值

所谓依赖注入就是要给它注入值

那么所谓的DI依赖注入的两种方式

1.Set方法注入

2.构造方法注入

几个术语

OCP:开闭原则,对扩展开放,对修改关闭(开发原则)

PID:依赖倒置原则,面向接口,抽象编程,不要面向具体编程.(开发原则)

IOC:控制反转(一种思想,一种新型设计模式)

DI: 依赖注入(控制反转思想的具体实现方式)

相关推荐
wangqiaowq7 小时前
Ontology 学习
学习
choumou_M9 小时前
算法_1:由浅入深学习快速排序QuickSort
学习·算法·排序算法
一壶浊酒伴余生10 小时前
新概念英语第一册 · 句法笔记
笔记·英语学习·英语语法·新概念英语
蒸蒸yyyyzwd13 小时前
后端学习笔记 day111
笔记·学习
叼烟扛炮14 小时前
[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战
人工智能·笔记·学习·langchain
Century_Dragon15 小时前
让新能源故障诊断实训“触手可及“——仿真教学软件(VR)介绍
学习
江屿风15 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
楚山之石15 小时前
【Radiology】影像组学的标准化与可重复性:IBSI 卷积滤波器共识及其未能覆盖的环节
人工智能·学习·机器学习·mri
小李不想当小白16 小时前
HAL库之UART(STM32 HAL库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
旖旎夜光17 小时前
【C++ 基础入门】C++ 多态(中):虚函数表、多态原理与动静绑定
开发语言·c++·笔记·学习