《Android源码设计模式解析和实战》单例设计模式

单例设计模式是最简单也是最常用的设计模式;介绍单例模式几种使用;
1:饿汉式 静态 第一次加载直接初始化
<pre>
public class Person_1 {
private static Person_1 person = new Person_1();
private Person_1() {
}
public static Person_1 getInstance() {
return person;
}
}
</pre>
2:懒汉式 使用时初始化(getInstance())

  1. 每次都需要同步
    <pre>
    public class Person_3 {
    private static Person_3 person_3;
    private Person_3() {
    }
    public static synchronized Person_3 getInstance() {
    if (person_3 == null) {
    person_3 = new Person_3();
    }
    return person_3;
    }
    }
    </pre>
    2)Double Check Lock(DCL) 实现单例
    双重判断避免不必要的同步;
    <pre>
    public class Person_2 {
    private static Person_2 person_2;
    private Person_2() {
    }
    public static Person_2 getInstance() {
    if (person_2 == null) {
    synchronized (Person_2.class) {
    if (person_2 == null) {
    person_2 = new Person_2();
    }
    }
    }
    return person_2;
    }
    }
    </pre>

  2. 静态内部类单例模式
    第一次调用getInstance() 才会初始化
    <pre>
    public class Person_4 {
    private Person_4() {
    }
    private static Person_4 person_4;
    public static Person_4 getInstance() {
    return SingleHolder.person_4;
    }
    private static class SingleHolder {
    private static final Person_4 person_4 = new Person_4();
    }
    }
    </pre>
    4)枚举
    <pre>
    public enum Person_5 {
    INSTANCE;
    @Override
    public String toString() {
    return super.toString();
    }
    }
    </pre>
    5)使用容器
    <pre>
    public class SingletonUtils {
    private static HashMap<String, Object> singletonMap = new HashMap<>();

    private SingletonUtils() {

    }

    public static void setSingleton(String key, Object value) {
    if (!singletonMap.containsKey(key)) {
    singletonMap.put(key, value);
    }
    }

    public static Object getSingleton(String key) {
    return singletonMap.get(key);
    }
    }
    </pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 9,870评论 4 34
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,148评论 25 709
  • 概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...
    怡红快绿阅读 3,365评论 0 0
  • 1 单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例。举个大家都熟知的例子——Windows任务...
    justCode_阅读 5,327评论 2 9
  • 【商洛】商山四皓的典故较有名,贾平凹是秦腔文化及其故乡的代言人;原生态保旅护较好,祛湿清肺的风景区较多;大云寺特别...
    人文商与旅阅读 1,517评论 0 0

友情链接更多精彩内容