Java中基本的设计模式

1. 设计模式的七大原则

开闭原则
单一职责原则
里氏代换原则
依赖倒转原则
接口隔离原则
合成/聚合复用原则
迪米特原则

2. 单例模式

JVM中控制一个类只有一个实例—单例模式。
链接: 参考黑马程序员基础篇的单例设计模式.
链接: 龙哥的单例设计模式博客补充知识.

实现方式:饿汉式、懒汉式、双检锁懒汉式、内部类懒汉式

2.1 饿汉式

1 有三个要点:私有构造函数,设置静态变量,定义获取静态变量的方法
并不是第一次Singleton1.getInstance()创建对像。
在这里插入图片描述
2 测试举例
在这里插入图片描述
3 通过反射破坏单例
首先获得Singleton类型,通过getDeclaredConstructor()得到无参的构造方法.进而将构造函数设置为公有的。
在这里插入图片描述
4 预防反射破坏单例有解决办法
在这里插入图片描述
5 反序列化破坏单例
首先把对象转化为字节流,再把字节流还原成一个对象。
在这里插入图片描述
解决办法 :增加一个readResolver()函数。
在这里插入图片描述
6 Unsafe(JDK内置类) 破坏对象

2.2 懒汉式单例

在这里插入图片描述
考虑多线程调用getInstance(),会存在单例的构造函数调用多次
解决办法:在获取静态变量的方法上添加修饰符:synchornized. (加锁)
在这里插入图片描述

2.3 优化懒汉式—双检索DCL

判断两次if (INSTANCE == NULL) (优化懒汉式)
在这里插入图片描述
双检索:必须加一个volatile 修饰静态变量

2.4 内部类懒汉式

把对象的创建放在静态代码块 可解决线程安全问题
内部类可访问内部外的私有对象
在这里插入图片描述

2.5 了解jdk中有哪些地方体现了单例模式

Runtime类—饿汉式
在这里插入图片描述
双检锁懒汉式 System类中有一个Console静态变量
在这里插入图片描述
集合工具类Conlections
获取空的集合,会涉及以empty打头的类。

3. 代理模式

4. 工厂方法模式

5. 抽象模式

6. 模板方法模式

7. 责任链模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值