资讯专栏INFORMATION COLUMN

设计模式——单件模式

testHs / 1735人阅读

摘要:简介单件模式也叫单例模式,是一种创建型模式。类图中类变量持有唯一的单件实例,是静态方法,可以通过类名在任何需要的地方使用它,与访问全局变量一样,但是可以延迟实例化。

1. 简介

  单件模式(Singleton)也叫单例模式,是一种创建型模式。它确保一个类只有一个实例,并提供全局访问。

2. UML类图

  Singleton中uniqueInstance类变量持有唯一的单件实例,getInstance()是静态方法,可以通过类名在任何需要的地方使用它,与访问全局变量一样,但是可以延迟实例化。

3. 实例

饿汉式:类加载就初始化实例,达到了线程安全的效果,但是在不需要的时候就实例化可能会造成资源浪费。

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

}

懒汉式:在需要的时候再初始化实例,线程不安全

public class Singleton {

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

懒汉式(同步方法):在需要的时候再初始化实例,线程安全,效率低下

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

双重检查:在需要的时候再初始化实例,线程安全,效率较高

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76534.html

相关文章

  • 开发之路(设计模式五:单件模式

    摘要:单件模式提供这个实例的全局访问点。实现单件模式,需要私有构造器,一个静态方法,一个静态变量。设计到多线程问题,同步会降低程序效率。 拥有独立且唯一的对象 这次讲述的是单件模式,就是整个内容里只有一个实例化唯一对象。这么说可能有点拗口,这么说吧,比方说,线程池,缓存,注册表,日志文件,甚至做JDBC中连接,关闭,增删改查数据库的Connection类(个人命名也许并不一样)、工具类等等...

    Steven 评论0 收藏0
  • 夕阳下, 那是我在奔跑——单件模式

    摘要:急切的創建對象饿汉式以上爲饿汉式單列設計,該設計是線程安全的,即不同的線程在調用時返回的是統一對象,在加載這個類時,馬上創建了這個類的唯一單列實列。 單件模式(JAVA實現) 定義 單件模式: 確保一個類只有一個實列, 並提供一個全局訪問點 單件模式和全局變量的區別 若將對象賦值給一個全局變量, 則該對象需在程序開始時就創建好, 而改對象可能不會使用, 造成資源浪費, 而單件模式支持...

    lieeps 评论0 收藏0
  • 常见设计模式的定义,应用场景和方法

    摘要:命令模式的由来,其实是回调函数的一个面向对象的替代品,命令模式早已融入到了语言之中。 模式是对某情景下,针对某种问题的某种解决方案。而一个设计模式是用来解决一个经常出现的设计问题的经验方法。这么说来,每个模式都可能有着自己的意图,应用场景,使用方法和使用后果。本文的行文思路和目的皆在于了解各个模式的定义,应用场景和用实例说明如何在前端开发中使用。 本文所设计到的概念和实例大多来自《H...

    xuxueli 评论0 收藏0

发表评论

0条评论

testHs

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<