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

    一、单例模式注意的点
    1、构造方法必须私有,别人不能随意使用,则无法随意创建对象;
    2、必须创建出唯一一个对象供他人使用;
    3、必须提供一个方法获得这唯一的对象;
    二、单例模式写法:
    1、饿汉式
    public class Singleton{
        private static final Singleton SINGLETON = new Singleton();//static 静态属性,final常量 一定不会改变,类初始化的时候加载,类只加载一起,只有一个实例。
        
        private Singleton(){}    //构造方法私有化,他人无法随意new 对象
     
        private Singleton getInstance(){ //给出他人使用唯一对象的方式
            return SINGLETON;
        }
    }
     
    2、DCL(double checked locking)双重锁检查
    public class Singleton{
        private static volatile Singleton SINGLETON = null;//volatile禁止指令重排序,防止使用未初始化的引用
     
        private Singleton(){}
     
        private Singleton getInstance(){
            if(SINGLETON == null){
                synchronized(Singleton.class){
                    If( SINGLETON == null ){
                        SINGLETON = new Singleton()
                    }
                }
            }
        } 
    }
     
    3、静态内部类方式
    public class  Singleton{//类加载只加载一次,外部类加载的时候内部类不加载,显式的调用getInstance的时候内部类才加载
        private Singleton(){}
     
        Private class static SingletonHold{
            private static Singleton SINGLETON = new Singleton();
        }
     
        public Singleton getInstance(){
            return SingletonHold.SINGLETON;
        }
    }
     
    4、枚举类型
    public enum Singleton{//枚举类型没有构造函数,所以可以防止反序列法
        INSTANCE
    }
  • 相关阅读:
    Linux内核架构读书笔记
    Linux内核container_of 宏
    Linux内核架构读书笔记
    Linux内核架构读书笔记
    Linux内核架构读书笔记
    Linux内核架构读书笔记- 2.4.1 进程复制
    作业07:字符串索引与切片
    作业06:数字类型
    作业04:逻辑运算
    作业05:用户登录(三次机会)且每次输入错误显示剩余次数
  • 原文地址:https://www.cnblogs.com/dujiudizhimo/p/12961529.html
Copyright © 2011-2022 走看看