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

    通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

    1.懒汉式

    //懒汉式 , 线程安全
    public class Single {
        //创建实例对象并且初始化
        private static Single instance = null;
        //构造器私有化
        private Single() {
            
        }
        //获取唯一的可用的对象
        public static synchronized Single getInstance() {
            if(instance == null) {
                instance = new Single();
            }
            return instance;
        }
        
        public static void main(String[] args) {
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            System.out.println(s1 == s2);
        }
    }

    2.饿汉式

    //饿汉式
    public class Single {
        
        private static final Single instance = new Single();
        //构造器私有化
        private Single() {
            
        }
        //获取唯一的可用的对象
        public static Single getInstance() {
            return instance;
        }
        
        public static void main(String[] args) {
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            System.out.println(s1 == s2);
        }
    }

    3.双重锁形式:

    //双重锁形式
    public class Single {
        
        private static volatile Single instance = null;
        //构造器私有化
        private Single() {
            
        }
        //获取唯一的可用的对象
        public static Single getInstance() {
            if(instance == null) {
                synchronized (Single.class) {
                    if(instance == null) {
                        instance = new Single();
                    }
                }
            }
            return instance;
        }
        
        public static void main(String[] args) {
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            System.out.println(s1 == s2);
        }
    }

    一般用第三种

    温故而知新
  • 相关阅读:
    项目中用到的ext及js细节
    《软件调试艺术》读后感六
    同步数据
    数组首地址取地址
    Storm简述及集群安装
    html5之canvas画图 1.写字板功能
    Memcached安装与配置
    WIP完工入库及完工退回的几个重要问题
    赵雅智:service_bindService生命周期
    【Android开发经验】Cannot generate texture from bitmap异常的解决方式
  • 原文地址:https://www.cnblogs.com/Uzai/p/9698330.html
Copyright © 2011-2022 走看看