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
    }
  • 相关阅读:
    SQL SERVER全面优化-------写出好语句是习惯
    SQL SERVER全面优化-------索引有多重要?
    Expert 诊断优化系列------------------冤枉磁盘了
    SQL语句调优三板斧
    SQL Server死锁产生原因及解决办法 .
    探讨SQL Server并发处理存在就更新七种解决方案
    Entity Framework查询,EF执行SQl
    在Asp.Net中操作PDF – iTextSharp
    postman发送json格式的post请求
    通过配置web.config使WCF向外提供HTTPS的Restful Service
  • 原文地址:https://www.cnblogs.com/dujiudizhimo/p/12961529.html
Copyright © 2011-2022 走看看