单例模式

作者: 客棹孤舟 | 来源:发表于2015-05-21 22:32 被阅读288次

三个要素

1、私有的构造方法
2、指向自身的静态实例引用
3、公有的静态的获取自身实例方法

饿汉式


public class Singleton{
        private static Singleton singleton = new Singleton();
        private Singleton(){};
        public static Singleton getInstance(){
            return singleton;
        }
    }

懒汉式


public class Singleton{
        private static Singleton singleton;
        private Singleton(){};
        public static Singleton getInstance(){
            if(singleton==null){
                singleton = new Singleton();
            }
            return singleton;
        }
    }

但是以上方式在多线程环境下会出现问题,可能会new出来多个实例。
固需加锁,但是直接在方法上加synchronized关键字,每次获取实例都会加锁,而事实上只需在创建实例的时候才需加锁。故将getInstance方法改成如下:


public static Singleton getInstance() {
        if (singleton== null) {
            synchronized (singleton) {
                if (singleton== null) {
                    singleton= new Singleton();
                }
            }
        }
        return singleton;
    }

当然也可以将创建实例的过程与获取实例的过程分开。

相关文章

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • 设计模式之单例模式详解

    设计模式之单例模式详解 单例模式写法大全,也许有你不知道的写法 导航 引言 什么是单例? 单例模式作用 单例模式的...

  • Telegram开源项目之单例模式

    NotificationCenter的单例模式 NotificationCenter的单例模式分析 这种单例模式是...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • IOS单例模式的底层原理

    单例介绍 本文源码下载地址 1.什么是单例 说到单例首先要提到单例模式,因为单例模式是单例存在的目的 单例模式是一...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • 单例模式

    单例模式1 单例模式2

  • java的单例模式

    饿汉单例模式 懒汉单例模式

网友评论

    本文标题:单例模式

    本文链接:https://www.haomeiwen.com/subject/czglqttx.html