Java中基本的设计模式
Posted Panda_Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中基本的设计模式相关的知识,希望对你有一定的参考价值。
基本的设计模式 待更新ing
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. 责任链模式
以上是关于Java中基本的设计模式的主要内容,如果未能解决你的问题,请参考以下文章