单例模式

  • 单例模式:保证一个类只有一个实例,并且提供一个访问该类的全局访问点

  • 举例那些地方用到了单例模式:

windows的回收站、任务管理器;多线程的线程池:方便对线程池内的线程进行控制

  • 优点:

    1. 在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例,确保了其他对象访问的都是一个实例;

    2. 提供了对唯一实例的受控访问;

    3. 在系统内存中只有一个实例,节约了系统资源,当频繁的创建和销毁对象时,单例模式提高了系统的效率

    4. 避免了对共享资源的多重占用;

  • 缺点:

    1. 不适用多变的对象
    2. 单例类职责过重,一定程度违反单一职责原则
  • 代码实例

    1. 饿汉单例:类初始化时就加载该对象,调用效率高,线程天生安全。
    /* 饿汉单例 */
    class Single{
        //1.私有化类的构造
        private Single(){
    
        }
        //2.声明当前类对象,没初始化
        //4.此对象也必须为静态static的
        private static Single instance = null;
        static {
            instance  = new Single();
        }
        //3.声明public、static的返回当前对象的方法
        public static Single getInstance(){
            return instance;
        }
    }
    
    1. 懒汉单例:类初始化时不会初始化该对象,使用的时候才会创建该对象,具备懒加载功能
    /* 懒汉单例 */
    class LazySingle{
        private LazySingle(){
    
        }
        private static LazySingle instance = null;
        public static LazySingle getInstance(){
            if(instance==null){
                synchronized(LazySingle.class){//同步锁
                    if(instance==null){
                        instance = new LazySingle();
                    }
                }
                
            }
            return instance;
        }
    }
    
posted @ 2022-09-26 08:31  WiThYouMr  阅读(8)  评论(0)    收藏  举报