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

    适用场景

    对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。

    单利模式的分类

    饿汉式:一开始就很饿,立马吃到肚子里。

    懒汉式:当别人给我喂食时,我就张口吃掉。

    两者的区别?

    饿汉式:线程安全,由JVM保证。

    懒汉式:线程不安全。

    代码示例

    饿汉式

    //饿汉式单例类.在类初始化时,已经自行实例化 
    public class Singleton1 {
        //私有的默认构造子
        private Singleton1() {}
        //已经自行实例化 
        private static final Singleton1 INSTANCE= new Singleton1();
        //静态工厂方法 
        public static Singleton1 getInstance() {
            return INSTANCE;
        }
    }

    懒汉式 (存在线程安全问题)

    //懒汉式单例类.在第一次调用的时候实例化 
    public class Singleton2 {
        //私有的默认构造子
        private Singleton2() {}
    
        //注意,这里没有final    
        private static Singleton2 single;
    
        //静态工厂方法 
        public static Singleton2 getInstance() {
             if (single == null) {  
                 single = new Singleton2();
             }  
            return single;
        }
    }

    懒汉式 (存在线程安全问题)改进型1

      利用静态内部类特性实现外部类的单例,线程安全并且高效

    public class Singleton3 {
        private static class SingleTonBuilder {
            private static Singleton3 singleTon = new Singleton3();
        }
    
        public static Singleton3 getInstance() {
            return SingleTonBuilder.singleTon;
        }   
    }
    

      

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
    javascript,隔行变色,鼠标移入时高亮
    创建DOM元素
    DOM基础,今天感冒了。。
    无缝滚动,JavaScript
    定时器的运用,延时提示框
    JavaScript,数组和函数传参 笔记
    写一下JavaScript的笔记
    swift版本的快排和归并排序
    ios Json数据生成实体类工具
  • 原文地址:https://www.cnblogs.com/luao/p/14734987.html
Copyright © 2011-2022 走看看