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. 责任链模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值