单例模式代码怎么写?

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

一、单例模式

什么是单例?确保在整个应用程序中只能有一个实例对象存在。

单例模式创建方式:饿汉和懒汉。

饿汉就是太饿了,所以提前把饭(单例)做好。需要的时候直接吃了。

懒汉就是懒得做饭(生成单例),饿的时候再吃。

饿汉代码实现:

1.构造方法私有化。

2.定义一个私有静态变量,直接在类加载的时候,直接生成一个唯一变量。修饰词:private static final (不需要volatile)

3.提供1个公开获得该变量的方法,返回该变量就行。

public class Singleton{

    //构造方法私有化
    private Singleton(){
    }
    
    //类加载时候,直接生成唯一实例变量
    private static final Singleton singleton = new Singleton();

    //对外提供拿到它的唯一实例的方法
    public static Singleton getSingleton(){
        return singleton;
    }

}

懒汉代码实现:

1.首先,将构造方法私有化,不对外提供构造方法。不然别人如果可以new对象,new出来的就不是同一个了。

2.先定义一个私有静态变量,初始化值null,并用volatile关键词修饰,确保可见性。保证直接从内存中读取最新值。修饰词:private volatile static 

3.定义1个public static 供他人拿到该单例的方法,并采用双检索方式,解决线程安全问题,确保多线程环境下只会创建1个实例。

该方法:先查,静态变量是否是空的。如果不是空的,直接返回。如果是空的,加一层synchroized锁,然后再判断是否是空的,如果是,就实例化new 1 个对象。这个方法只会走一次。文章来源地址https://www.toymoban.com/news/detail-567018.html

public class Singleton{

    //构造函数私有化
    private Singleton(){
    };
    
    //volatile 多线程可见,禁止指令重排,保证现场原子性
    private volatile static Singleton singleton = null ;

    // DCL 双重检索
    public static Singleton getSingleton (){
        if(singleton ==null){
            synchronized(Singleton.class){
                if(singleton ==null){
                    singleton = new Singleton();
                }    
            }
        }
        return singleton ;
    }
} 

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

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

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

相关文章

  • 设计模式-观察者模式

    观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者

    2024年02月15日
    浏览(58)
  • 设计模式---观察者模式

    1,概念         属于行为模式的一种,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一对象主题对象,这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。 在观察者模式中有如下角色: Subject:抽象主题(抽象被观察者),

    2024年02月15日
    浏览(65)
  • 设计模式:观察者模式

    定义 观察者模式(Observer Pattern)是一种行为设计模式,允许一个对象(称为“主题”或“可观察对象”)维护一组依赖于它的对象(称为“观察者”),当主题的状态发生变化时,会自动通知所有观察者对象。 应用场景 观察者模式适用于以下场景: 联动反应 :当一个对象

    2024年04月08日
    浏览(59)
  • 重温设计模式 --- 观察者模式

    观察者模式 是一种行为型设计模式,它允许对象之间建立一种一对多的关系,使得当一个对象状态改变时,所有依赖它的对象都能够自动得到通知并更新自己的状态。该模式可以帮助我们实现松耦合的系统,以便更好地应对变化和扩展。 在观察者模式中,有两个角色: 观察

    2024年02月13日
    浏览(59)
  • 设计模式(11)观察者模式

    一、概述: 1、定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 2、结构图: 实现  调用

    2024年02月11日
    浏览(53)
  • 设计模式——14. 观察者模式

    观察者模式(Observer Pattern)是一种行为型设计模式,用于定义对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都能够自动收到通知并更新自己的状态,以保持与被观察对象的同步。观察者模式也被称为发布-订阅模式。 观察者模式包含以

    2024年02月07日
    浏览(45)
  • 设计模式之观察者模式

    可以帮你的对象知悉现况,不会错过该对象感兴趣的事。对象甚至在运行时可决定是否要继续被通知。 从报纸和杂志的订阅说起: 报社的业务就是出版报纸 向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸。 当你不

    2024年01月24日
    浏览(54)
  • 设计模式:行为型模式 - 观察者模式

    定义: 又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。 在观察者模式中有如下角色: Subject:抽象主题(抽象被观察

    2023年04月22日
    浏览(97)
  • 设计模式之二:观察者模式

    假定我们需要为Weather-O-Rama公司建立一个气象站系统,除已有的WeatherData有数据源类,还需要更新三个布告板的显示:目前状况(温度、湿度、气压)、气象统计和天气预报。  1 以下是一个可能的实现 上述实现有以下问题存在: 针对具体实现编程,而非针对接口(currentCon

    2024年02月13日
    浏览(39)
  • 设计模式行为型——观察者模式

    目录 观察者模式的定义 观察者模式的实现 观察者模式角色 观察者模式类图 观察者模式代码实现 观察者模式的特点 优点 缺点 使用场景 注意事项 实际应用         观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的

    2024年02月13日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包