-
单例模式要点:
- 一个类只需要一个实例化对象;
- 必须自行创建实例;
- 必须自行向整个系统提供这个实例
-
实现:
- 只提供私有构造方法;
- 有一个该类的静态私有对象;
- 提供一个静态公有方法用于创建、获取静态私有对象;
- 私有构造方法->不能随意创建实例;
- 静态私有对象:确保只有一个实例对象
- 静态公有方法->提供一个外部接口,可直接通过类名调用该方法,方法内部能直接调用静态对象;
- 饿汉式实现方法:在创建类时实例化
// 在创建类时直接实例化,空间换时间
public class SingletonOne{
//1. 私有构造
private SingletonOne(){
}
//2. 在创建该类时初始化静态私有对象
private static SingletonOne instance = new SingletonOne();
// 3.提供静态公有方法返回静态实例对象
public static SingletonOne getInstance(){
return instance;
}
}
- 懒汉式实现方法:静态公有方法中实例化
// 在调用静态公有方法后,才完成对象的实例化
public class SingletonTwo{
//1. 私有构造
private SingletonOne(){
}
//2. 在创建该类时初始化静态私有对象
private static SingletonTwo instance = null;
// 3.提供静态公有方法返回静态实例对象
public static SingletonOne getInstance(){
if(instance==null) // 保证只会实例化一次
instance = new SingletonTwo();
return instance;
}
}
- 饿汉式 vs 懒汉式
单例模式的实现方法 | 实例化对象的时间 | 空间特点 | 时间特点 | 线程安全 |
---|---|---|---|---|
饿汉式 | 在类加载时候完成 | 空间占用时间长 | 在第一次使用时加载速度快 | 线程安全 |
懒汉式 | 在第一次调用共有方法时完成 | 不会造成内存空间浪费 | 在第一次使用时加载时间相对慢 | 线程不安全 |
文章来源地址https://www.toymoban.com/news/detail-644210.html
文章来源:https://www.toymoban.com/news/detail-644210.html
到了这里,关于【java】设计模式——单例模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!