欢迎光临散文网 会员登陆 & 注册

Java设计模式之-单例设计模式

2023-08-16 23:28 作者:bili_52912388700  | 我要投稿

什么是单例模式

单例模式是一种设计模式,它保证在一个应用程序的上下文中,我们只创建一个类的单一实例。这个类必须自我实例化并向整个系统提供这个实例。


主要解决什么问题

单例模式主要解决的是资源共享和控制共享资源的问题。当我们希望避免对某个类的频繁创建和销毁而带来的大量性能开销,或者希望确保所有的请求都访问同一个实例,以便更好地协调操作时,就可以使用单例模式。


在什么时候我们需要使用单例模式

当我们需要控制实例数目,节约系统资源的时候;当一个类只允许创建一个对象时,比如一个系统只能有一个窗口管理器,或者在一个系统中只能有一个计时工具等情况下,就需要使用单例模式。


生活中的应用实例

一个生活中的例子可能是总统或首相的角色。在一个国家中,总统或首相在任何特定时间只能有一个。这个人负责做出决策并控制资源。


优点

在内存里只有一个实例,减少了内存开销。

避免对资源的多重占用。

可以全局访问。

缺点

没有接口,扩展困难。

如果要扩展单例对象,只有修改代码,不能遵循“开闭原则”。

使用场景

需要频繁实例化然后销毁的对象。

创建对象时耗时过多或耗资源过多,但又经常用到的对象。

需要定义大量的静态变量和静态方法的环境,类似全局变量和全局函数的场景。

代码举例

以下是一个简单的单例模式的Java代码实现:


java

Copy

public class Singleton {

    // 在自己内部定义自己一个实例

    private static final Singleton INSTANCE = new Singleton();


    // 私有化构造函数,外部无法访问

    private Singleton() {}


    // 对外提供获取实例的静态方法

    public static Singleton getInstance() {

        return INSTANCE;

    }

}

这就是一个最简单的单例模式实现,这种方式称为饿汉式单例,即类一旦加载,就试图在自己的内存中创建一个实例。这种方式简单直接,在多线程环境下也能保证单例。但缺点是无法做到延迟实例化。


Java设计模式之-单例设计模式的评论 (共 条)

分享到微博请遵守国家法律