zoukankan      html  css  js  c++  java
  • 单例模式的两种简单实现方法

    单例模式的根本是保证对象唯一性

    1.不让其他程序创建该类对象。
    2.在本类中创建一个本类对象。
    3.对外提供方法,让其他程序获取这个对象。

    饿汉式

    public class SingleEHanShi {
        private SingleEHanShi(){}
        private static SingleEHanShi singleEHanShi = new SingleEHanShi();
    
        public static SingleEHanShi getInstance(){
            return singleEHanShi;
        }
    }
    
    class TestDemo{
        public static void main(String[] args) {
            SingleEHanShi singleEHanShi = SingleEHanShi.getInstance();
            SingleEHanShi singleEHanShi1 = SingleEHanShi.getInstance();
    
            System.out.println(singleEHanShi == singleEHanShi1);
        }
    }
    

    懒汉式(线程安全)

    普通的懒汉式存在线程安全问题

    public class SingleLanHanShi {
        private SingleLanHanShi(){}
        //延迟加载
        private static SingleLanHanShi singleLanHanShi = null;
        public  static SingleLanHanShi getInstance(){
            if (singleLanHanShi == null){
                synchronized(SingleLanHanShi.class){
                    if (singleLanHanShi == null){
                        /*这里是两行代码,可能会出现线程安全问题,这里可以加锁避免安全问题*/
                        singleLanHanShi = new SingleLanHanShi();
                    }
                }
            }
            return singleLanHanShi;
        }
    }
    
    class TestDemo1{
        public static void main(String[] args) {
            SingleLanHanShi singleLanHanShi = SingleLanHanShi.getInstance();
            SingleLanHanShi singleLanHanShi1 = SingleLanHanShi.getInstance();
    
            System.out.println(singleLanHanShi == singleLanHanShi1);
        }
    }
    
    
  • 相关阅读:
    关于Altium Designer的BOM,元件清单
    关于Altium Designer中的搜索图纸上的元件
    头文件的问题
    关于stm32加不进.h文件的问题
    【数论】——欧拉定理
    python matplotlib 多图像排列显示
    直方图均衡原理
    辐射度,辐照度,相机响应函数
    A = min(1, max(0, A))
    gamma校正
  • 原文地址:https://www.cnblogs.com/wangyi666/p/10490694.html
Copyright © 2011-2022 走看看