设计模式-单例模式

想必单例模式是最简单的 设计模式了防止对象重复创建消耗资源 比如创建网络请求的时候不必每次都去创建OkHttpClient 这个类我们就可以写一个单例

1,饿汉式

package com.wangtk.security.singletion;


import okhttp3.OkHttpClient;

public class OkHttpClientSingleton {

    private volatile static OkHttpClient singleton = new OkHttpClient();


    private OkHttpClientSingleton() {
    }

    public static OkHttpClient getSingleton() {
        return singleton;
    }

}

2,懒汉式

package com.wangtk.security.singletion;

import okhttp3.OkHttpClient;

public class OkHttpClientSingleton {

    //注意 这个类变量一定要使用 volatile 关键字 可参考 The "Double-Checked Locking is Broken" Declaration

    private volatile static OkHttpClient singleton;


    private OkHttpClientSingleton() {
    }

    public static OkHttpClient getSingleton() {
        if (singleton == null) {
            synchronized (OkHttpClientSingleton.class) {
                if (singleton == null) {
                    singleton = new OkHttpClient();
                }
            }
        }
        return singleton;
    }
}

3、登记式/静态内部类

package com.wangtk.security.singletion;


import okhttp3.OkHttpClient;

public class OkHttpClientSingleton {


    private OkHttpClientSingleton() {
    }
    
    public static final OkHttpClient getInstance() {
        return SingletonHolder.INSTANCE;
    }

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

友情链接更多精彩内容