创建单例模式的7种方式

这篇具有很好参考价值的文章主要介绍了创建单例模式的7种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

想要了解更多知识或者需要源码学习小程序搜索:源码轻舟文章来源地址https://www.toymoban.com/news/detail-521804.html

  • 饿汉式
class Singleton{
	private Singleton(){}
    private final static Singleton instance = new Singleton();
    public static Singleton getInstance(){
        return instance;
    }
}
  • 懒汉式
class Singleton{
	private Singleton(){}
    private static volatile Singleton instance;
    public static Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}
  • 双重监测
class Singleton{
	private Singleton(){}
    private static volatile Singleton instance;
    public static Singleton getInstance(){
        if(instance == null){
            synchronized(Singleton.class){
                if(instance == null){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
  • 静态内部类(推荐)
class Singleton{
	private Singleton(){}
    private static class SingletonHelper{
        private static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance(){
        return SingletonHelper.INSTANCE;
    }
}
  • 枚举(推荐)
enum Singleton{
	INSTANCE;
}
  • 多例模式
class Singleton{
	private static Map<String,Singleton> instances = new HashMap<String,Singleton>();
    private final int MAX_INSTANCE = 3;
    private String name;
    private Singleton(String name){
        this.name = name;
    }
    public static Singleton getinstance(String name){
        if(!instances.containKey(name) && instance.size() < MAX_INSTANCE){
            synchronized(Singleton.class){
                if(!instances.containKey(name) && instance.size() < MAX_INSTANCE){
                    instances.put(name,new Singleton(name));
                }
            }
        }
        return instances.get(name);
    }
}
  • 线程唯一
class Singleton{
	private static ThreadLocal<Singleton> instances = new ThreadLocal<>();
    private Singleton(){}
    public static Singleton getInstance(){
        if(instances.get() == null){
            synchronized(Singleton.class){
                if(instances.get() == null){
                    instances.add(new Singleton());
                }
            }
        }
        return instances.get();
    }
}

到了这里,关于创建单例模式的7种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java单例模式详解(五种实现方式)

            Java单例模式是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点以获取该实例。它通常用于需要共享资源或控制某些共享状态的情况下。 例如:         一个日志记录器(Logger)。在一个应用程序中,可能有多个组件需要记录日志,但是我们

    2024年02月13日
    浏览(36)
  • Java设计模式之创建型-单例模式(UML类图+案例分析)

    目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 4.1、饿汉模式 4.2、懒汉模式(线程不安全) 4.3、懒汉模式(线程安全) 4.4、双重检索模式 4.5、静态内部类 4.6、枚举  五、总结 单例模式确保一个类只有一个实例,提供一个全局访问点。一般实现方式是把构造函

    2024年02月13日
    浏览(45)
  • 【java设计模式】创建型模式介绍(工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式)

    简介 本文介绍Java设计模式中创建型模式的五种 一、工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工

    2024年02月16日
    浏览(47)
  • Java面试之单例模式的六种实现方式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 由于设计模式在面向对象中起着举足轻重的作用,在面试中很多公司都喜欢问一下有关设计模式的问题。在常用的设计模式中,Singleton单例模式是唯一一个能用短短几十行代码完整实现的模式,因此,写

    2024年02月10日
    浏览(44)
  • 【设计模式】六、【创建性模式】揭秘单例模式:从生活例子到Java代码

    转自:提升工作效率-单例模式详解 1、介绍 单例模式的产生,它主要是为了解决在软件系统中,对于一些类,我们只需要创建一个全局唯一的实例。例如,系统的配置信息、数据库连接池等。如果有多个实例可能会导致状态不一致,或者额外的资源消耗。这个需求在很多软件

    2024年02月06日
    浏览(45)
  • [设计模式Java实现附plantuml源码~创建型] 确保对象的唯一性~单例模式

    前言: 为什么之前写过Golang 版的设计模式,还在重新写 Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很多人学习有做笔记的习惯,如果单纯的只是放一张图片,那

    2024年01月19日
    浏览(57)
  • Java单例模式的五种实现方式 懒汉式 饿汉式 双重校验锁 静态变量 静态内部类 枚举实现单例模式等

    Java单例模式是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点以获取该实例。它通常用于需要共享资源或控制某些共享状态的情况下。 懒汉式:在类加载的时候就创建对象,要再调用方法时才创建对象,减少内存开销。 饿汉式:再类加载的时候就实例化对

    2024年04月27日
    浏览(36)
  • 【单例设计模式原理详解】Java/JS/Go/Python/TS不同语言实现

    单例模式(Singleton Pattern)属于创建型设计模式,这种模式只创建一个单一的类,保证一个类只有一个实例,并提供一个访问该实例的全局节点。 当您想控制实例数目,节省系统资源,并不想混用的时候,可以使用单例模式。单例有很多种实现方式,主要分为懒汉和饿汉模式

    2023年04月27日
    浏览(93)
  • 创建型模式-单例模式

    创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。 这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。 创建型模式分为: 单例模式 工厂方法模式 抽象工程模式 原型模式 建造者模式 单例模式(Singleton Pattern)是

    2024年02月13日
    浏览(20)
  • 【地铁上的设计模式】--创建型模式:单例模式(五)--枚举单例

    什么是枚举单例 枚举单例是指使用枚举类型来实现单例模式,它是单例模式中最简单、最安全的一种实现方式。在枚举类型中定义的枚举值只会被实例化一次,即保证了全局唯一的实例,而且实现简单、线程安全、防止反射攻击、支持序列化等。 如何实现枚举单例 实现枚举

    2023年04月25日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包