作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
学习必须往深处挖,挖的越深,基础越扎实!
单例设计模式
单例模式的特点
- 某个类只能有一个实例
- 它必须自行创建这个类
- 它不许向整个系统提供这个类的实例
饿汉模式/立即加载
饿汉式的特点: 在使用类时就已经将对象加载完毕
饿汉式的缺点:
- 由于在使用前就加载完毕,会造成内存资源的浪费
- 在获取实例时,若没有同步方法,容易产生非线程安全问题。
饿汉式的创建方式:
- 静态常量饿汉式
- 静态代码块饿汉式
- 枚举类
静态常量饿汉式
// 静态常量的饿汉式
public class Singleton1 {
private static Singleton1 instance = new Singleton1();
private Singleton1() {
}
public static Singleton1 getInstance() {
return instance;
}
}
静态代码块饿汉式
// 静态代码块的饿汉式
public class Singleton2 {
private static Singleton2 instance;
private Singleton2() {
}
static {
instance = new Singleton2();
}
public static Singleton2 getInstance() {
return instance;
}
}
饿汉式的非线程安全问题
如果在获取实力式没有同步,则会产生非线程安全问题
【示例】
使用静态常量饿汉式,创建一个 Article 方法, 包含标题内容两个属性,返回一个实例对象并重写 toString 方法
public class Article {
private static Article object = new Article();
private static String title;
private static String content;