jdk中常见的设计模式

  • 单例
  • 工厂模式(简单工厂、抽象工厂)
  • 装饰器模式

你是否在你的代码里使用过设计模式?

  • 面向对象编程中,使用工厂模式来创建对象

Java中什么叫单例设计模式?请写出Java中线程安全的单例模式

  • 一个类只有一个实例,主要有懒汉式和饿汉式两种创建方式,懒汉式仅初始化类,但是仅在调用getInstance方法时才创建对象;
    饿汉式则在初始化类的时候一并创建对象
  • 懒汉式,线程不安全
1
2
3
4
5
6
7
8
9
10
11
12
public class Singleton{
private static Singleton instance;
private Singleton(){}

public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}

  • 懒汉式,线程安全(使用synchronized来保证线程安全)
1
2
3
4
5
6
7
8
9
10
11
12
public class Singleton{
private static Singleton instance;

private Singleton(){}

public static synchronized Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
  • 饿汉式
1
2
3
4
5
6
7
public class Singleton{
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}

为什么说枚举是实现单例的最好方式

  • 线程安全
  • 简洁性和可读性
  • 序列化安全性
  • 反射安全性