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

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

作者: 微风细雨007 | 来源:发表于2019-01-14 14:44 被阅读12次

应用最广的模式-单例模式

应用场景

  • 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。
  • 例如,创建一个对象需要消耗资源过多,如要访问IO和数据库等资源,这时候就要考虑使用单例模式。
  • 单例模式广泛应用于线程池、缓存、日志对象等场景,这些应用场景基本都涉及到资源管理

关键点

  • 构造函数不对外开放,一般为private;
  • 通过一个静态方法或者枚举返回单例类对象;
  • 确保单例类的对象有且只有一个,尤其是在多线程环境下
  • 确保单例类对象在反序列化时不会重新构建对象

实现方式

包括:饿汉模式,懒汉模式,双重校验锁模式静态内部类,枚举等..

饿汉,静态内部类,枚举都是线程安全的。双重校验锁使用volatile

推荐实现方法:静态内部类

推荐词:内部类的方式保证了仅当单例类被调用时才实例化对象,同时也保证了线程安全;他利用classloader的机制来保证初始化instance时只有一个线程;当getInstance方法被调用时,内部类SingletonHolder才会被装载,从而实例化单例类。

public class Singleton {
    //1.私有构造方法
    private Singleton() {
    }

    //2.创建静态内部类
    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    //3.创建实现方法
    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
    
}

枚举单例

推荐词:写法简单,线程安全,反序列化也不会生成新的实例

public enum SingletonEnum {
    INSTANCE;

    public void showMessage(){
        System.out.println("Hello World !!!");
    }
}

总结

单例模式是运用频率很高的模式,但是,由于在客户端通常没有高并发情况,因此,选择哪种方式并不会有太大影响

Kotlin

这个相当于饿汉模式,基本一般开发要求都能满足了

object SingletonKt {
}

相关文章

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有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/svoddqtx.html