- 什么是设计模式?
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 - 单例模式
有些对象只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等,如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等,用单例模式保证整个应用中某个实例有且仅有一个。
单例模式分为懒汉模式和饿汉模式。 - 单例的饿汉模式(单例模式只允许某个应用程序创建一个实例)
将构造方法私有化,不允许外部直接创建对象
创建类的唯一实例,用private修饰,该类不能被外部直接调用,用static 修饰,该对象变成类的,可以通过类来直接调用,声明并实例化
提供一个用于获取实例的public方法,返回创建的实例对象,然后在其他类中创建的时候可以直接调用方法,方法要用static修饰,变成类方法,可以直接用类来调用
public class Singleton {
private Singleton() {
}
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
- 单例模式的懒汉模式
将构造方法私有化,不允许外部直接创建对象
创建类的唯一实例,使用private static修饰,仅仅声明,没有实例化
提供一个用于获取实例的方法,使用public static修饰,在方法里判断实例是否为空,若为空要创建实例
public class Singleton2 {
private Singleton2() {
}
private static Singleton2 instance;
public static Singleton2 getInstance() {
if(instance == null) {
instance = new Singleton2();
}
return instance;
}
}
- 饿汉模式和懒汉模式的区别
饿汉模式的特点是加载类时比较慢,但是运行时获取对象的速度比较快,线程安全;
懒汉模式的特点是加载类时比较快,但是运行时获取对象的速度比较慢,线程不安全。