Java中基本的设计模式

Posted Panda_Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 责任链模式

以上是关于Java中基本的设计模式的主要内容,如果未能解决你的问题,请参考以下文章

java的基本程序设计结构

JAVA 设计模式遵循的六大基本准则

第三章 Java的基本层序设计结构

Java的基本程序设计结构

Java基本的程序结构设计 基本类型的输入输出

201671010128 2016-2017-2 《Java程序设计》之Java的基本程序设计结构