总结一波:
1,JDBC引入解耦方式
工厂模式
将编译器依赖变为运行时依赖
配置文件
2,传统三层结构面临的问题
new 关键字的使用
3,自定义Spring容器
将对象创建交给Spring容器进行管理
Spring容器:反射+xml解析+工厂模式
①,需要将要创建的对象的信息保存到xml配置文件中
配置一个bean标签就对应有一个对象
②,在自定义Spring容器初始化的时候,将xml文件解析
将解析到的对象信息保存到map集合中
③,根据这些保存的信息使用反射创建对象,
④,提供一个方法对外提供这些对象
4,自定义Spring容器优化版
①,需要将要创建的对象的信息保存到xml配置文件中
②,在自定义Spring容器初始化的时候,将xml文件解析
③,根据解析到信息创建对象,并把对象保存到map集合
④,提供一个方法对外提供这些对象
5,自定义Spring容器的使用
初始化spring容器
getBean
6,IoC控制反转
资源的控制权反转了!!!
没有使用Spring容器之前,资源的控制权在java程序手上
使用spring容器之后,资源的控制权到spring容器手上了!!
单例模式
①,私有化构造方法
②,声明本类对象,并使用private static修饰
③,提供一个对外访问方法
重点:
7,饿汉单例设计模式 11111
效率高
浪费内存
不支持懒加载
线程安全
推荐开发中使用
8,静态内部类单例设计模式 11111
静态内部类:不随着外部类的加载而加载
效率高
节省内存
支持懒加载
线程安全
推荐开发中使用
9,懒汉单例设计模式
效率较高
节省内存
支持懒加载
线程不安全(第一次创建对象)
不推荐开发中使用
10,同步懒汉单例设计模式
效率非常低
节省内存
支持懒加载
线程安全(所有的场景都是线程安全)
不推荐开发中使用
11,双重校验单例设计模式 11111
效率高
节省内存
支持懒加载
线程安全(第一次创建线程安全,后续压根不需要线程安全)
推荐开发中使用
12,以上单例设计模式还存在的问题
无法避免反射攻击和序列化攻击
来源:CSDN
作者:小六子_Java魔法师
链接:https://blog.csdn.net/weixin_46221109/article/details/104804180