美文网首页
设计模式(创建型--单例模式)

设计模式(创建型--单例模式)

作者: 一吱米 | 来源:发表于2019-03-11 15:34 被阅读0次
单例模式
单例模式结构
实现单例模式的5种方式

1.饿汉式单例(立即加载方式)

public class Singleton{

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

2.懒汉式单例(延迟加载方式)

public class Singleton{

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

多线程环境下使用syhchronized

public class Singleton{

    private Singleton(){};
    private static Singleton single  =null ;
    
    public static Singleton getInstance(){
        // 等同于 synchronized public static Singleton getInstance()
        syhchronized(Singleton.class){
            if(Singleton  == null){
                Singleton = new Singleton();
            }
        }
    return Singleton ;
    }
}

利用双重检查提高效率

public class Singleton{

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

3.静态内部类实现

public class Singleton{

    private Singleton(){};
    
    private static class InnerClass {
        private static Singleton single  =new Singleton();
    }
    
    public static Singleton getInstance(){
        return InnerClass .single;
    }
}

4.静态代码块

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

5.内部枚举类实现

public class SingletonFactory {

    // 内部枚举类
   private enum EnmuSingleton{
        Singleton;
        private Singleton singleton;
         //枚举类的构造方法在类加载是被实例化 
        private EnmuSingleton(){
            singleton = new Singleton();
        }
        public Singleton getInstance(){
            return singleton;
        }
    }
    
    public static Singleton getInstance() {
          return EnmuSingleton.Singleton.getInstance();
    }
}

class Singleton{
    public Singleton(){}
}

相关文章

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 开发之设计模式-单例模式

    设计模式 设计模式分为三大类:创建型、结构型、行为型在Java中有24中设计模式 创建型:单例 1、为什么用单例模...

  • 设计模式分类

    经典23种设计模式: 创建型设计模式: Singleton Pattern(单例模式) PrototypePatt...

  • Python 之单例模式

    简介:单例模式(Singleton Pattern) 是最简单的设计模式之一,属于创建型的设计模式。单例模式涉及到...

  • “Python的单例模式有四种写法,你知道么?”——孔乙己

    什么是单例模式 单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型...

  • S4. 单例模式

    单例模式(Singleton) 介绍 单例模式是创建型设计模式,即用于创建对象的设计。其能够保证当前系统仅存在一个...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • PHP设计模式—创建型设计模式

    ** 创建型设计模式 **: 单例模式(Singleton Pattern) 工厂方法模式(Factor Patt...

  • 【设计模式】创建型设计模式汇总

    创建型设计模式汇总 1. 单例模式 1.1 单例模式的定义 一个类只允许创建一个对象或实例。 1.2 单例模式的作...

  • 23种设计模式学习总结

    创建型设计模式 主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码合使用代码。 单例模式 单例模式用来...

网友评论

      本文标题:设计模式(创建型--单例模式)

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