Android设计模式之单例模式

一、定义:确保一个类只有一个实例,并且自动实例化,并向整个系统提供这个实例。

二、使用场景:避免重复创建对象,过多消耗系统资源。

三、使用方式

3.1饿汉式:类加载时立即初始化,线程安全,可能会浪费资源。

public class Singleton {

private static final Singleton INSTANCE = new Singleton();

private Singleton() {} // 私有构造方法

public static Singleton getInstance() {

return INSTANCE;

}

}

3.2懒汉式:需要使用实例时才进行初始化,多线程不安全。

public class Singleton {

private static Singleton instance;

private Singleton() {}

public static Singleton getInstance() {

if (instance == null) {

instance = new Singleton();

}

return instance;

}

}

3.3双重检查锁,DCL:使用时创建实例,使用双重锁校验,线程安全。

public class Singleton {

private static volatile Singleton instance;

private Singleton() {}

public static Singleton getInstance() {

if (instance == null) {

synchronized (Singleton.class) {

if (instance == null) {

instance = new Singleton();

}

}

}

return instance;

}

}

3.4静态内部类:使用类加载机制,延迟初始化,线程安全。

public class Singleton {

private Singleton() {}

private static class Holder {

private static final Singleton INSTANCE = new Singleton();

}

public static Singleton getInstance() {

return Holder.INSTANCE;

}

}

3.5枚举单例:简洁、线程安全,且能防止反射和序列化破坏单例。

public enum Singleton {

INSTANCE;

public void doSomething() {

// 功能代码

}

}

相关推荐
阿波罗尼亚8 小时前
Head First设计模式(十四) 设计原则 其他的模式
设计模式
期待のcode9 小时前
Java的单例模式
java·开发语言·单例模式
山风wind12 小时前
设计模式-责任链模式:让请求在链条中流动直到被处理
设计模式·责任链模式
invicinble12 小时前
设计模式全局预览,以及为什么会
设计模式
xxxxxxllllllshi13 小时前
深入解析单例模式:从原理到实战,掌握Java面试高频考点
java·开发语言·单例模式·面试
小股虫13 小时前
让系统“杀不死”:同步与异步场景下的弹性设计模式手册
分布式·微服务·设计模式·架构·团队建设·方法论
山风wind14 小时前
设计模式:状态模式详解-让对象的行为随状态改变而改变
设计模式·状态模式
ShineSpark14 小时前
C++单例模式的演进:从经典实现到现代线程安全范式
c++·安全·单例模式
__万波__15 小时前
二十三种设计模式(十八)--中介者模式
java·设计模式·中介者模式
自由生长202421 小时前
设计模式和设计原则-中高级架构思路-面向接口编程
设计模式