zoukankan      html  css  js  c++  java
  • 单例模式

    单例模式是设计模式中使用最为普遍的模式之一,它是一种对象创建模式,单例模式可以确保系统中一个类只产生一个实例,而且自行实例化并向整个系统提供这个实例。

    好处

    1. 节省系统开销,频繁使用的对象,节省创建花费的时间。
    2. 由于创建次数少,内存使用低,减轻GC压力。

    特点

    1. 单例类确保自己只有一个实例。
    2. 单例类必须创建自己的唯一实例。
    3. 单例类必须给所有其他对象提供这一实例。

    饿汉

        public class EagerSingleton {
            private static EagerSingleton instance = new EagerSingleton();
            private EagerSingleton(){
            }
            public static EagerSingleton getInstance(){
                return instance;
            }
        }
    
    构造方法私有,instance成员变量和getInstance()是static,jvm加载时,就会被创建。缺点,不支持lazy-loading,会内存常驻。
    

    懒汉

        public class LazySingleton {
        private static LazySingleton instance = null;
        private LazySingleton(){
        }
        public static LazySingleton getInstance(){
            if(instance == null){
                instance = new LazySingleton();
            }
            return instance;
        }
    }
    
    非线程安全,多个访问者同时访问,则会产生多个实例。
    

    懒汉加锁

        public class LazySingleton {
        private static LazySingleton instance = null;
        private LazySingleton(){
        }
        public static synchronized LazySingleton getInstance(){
            if(instance == null){
                instance = new LazySingleton();
            }
            return instance;
        }
    
    引入了同步关键字保证线程安全,但降低系统性能。
    

    静态内部类

        public class LazySingleton {
        private LazySingleton(){
        }
        private static class SingletonHolder{
           private static LazySingleton instance = new LazySingleton();
        }
    
        public static  LazySingleton getInstance(){
            return SingletonHolder.instance;
        }
    
    调用getInstance()时,才会加载SingletonHolder,从而初始化instance。(静态内部类在第一次使用时才会被加载)
  • 相关阅读:
    python操作adb代码
    android sdcard 权限管理策略研究
    glom模块的使用(二)
    爬虫错误汇总
    微博展开全文获取
    数据清洗之微博内容清洗
    Esxi5-管理平台vcenter5.0_数据库迁移流程
    migrating-vcenter-database-express-to-sql-2008-r2
    Centos生成SSL证书的步骤
    找到一篇关于2.4/5G信道的新介绍
  • 原文地址:https://www.cnblogs.com/Ch1nYK/p/8598303.html
Copyright © 2011-2022 走看看