美文网首页
单例模式(Singleton)

单例模式(Singleton)

作者: 群众里面有坏人呐 | 来源:发表于2018-12-23 15:24 被阅读0次

    定义

    保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    为什么要用单例模式

    在我们的系统中,有一些对象其实我们只需要一个,比如说:线程池、缓存、对话框、注册表、日志对象、充当打印机、显卡等设备驱动程序的对象。事实上,这一类对象只能有一个实例,如果制造出多个实例就可能会导致一些问题的产生,比如:程序的行为异常、资源使用过量、或者不一致性的结果。
    对于频繁使用的对象,可以省略创建对象所花费的时间,由于 new 操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻 GC 压力,缩短 GC 停顿时间。

    单例的模式的实现

    1. 饿汉方式,指全局的单例实例在类装载时构建
    public class SingletonHungary {
        private SingletonHungary(){};
        private static SingletonHungary instance = new SingletonHungary();
        public SingletonHungary getInstance() {
            return instance;
        }
    }
    
    1. 懒汉方式,指全局的单例实例在第一次被使用时构建
    public class Singleton {
        private Singleton(){};
        private Singleton instance;
        public Singleton getInstance() {
            if (instance == null) {
                synchronized (Singleton.class){
                    if (instance == null){
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
    

    相关文章

      网友评论

          本文标题:单例模式(Singleton)

          本文链接:https://www.haomeiwen.com/subject/cudnkqtx.html