Java设计模式之-单例设计模式
什么是单例模式
单例模式是一种设计模式,它保证在一个应用程序的上下文中,我们只创建一个类的单一实例。这个类必须自我实例化并向整个系统提供这个实例。
主要解决什么问题
单例模式主要解决的是资源共享和控制共享资源的问题。当我们希望避免对某个类的频繁创建和销毁而带来的大量性能开销,或者希望确保所有的请求都访问同一个实例,以便更好地协调操作时,就可以使用单例模式。
在什么时候我们需要使用单例模式
当我们需要控制实例数目,节约系统资源的时候;当一个类只允许创建一个对象时,比如一个系统只能有一个窗口管理器,或者在一个系统中只能有一个计时工具等情况下,就需要使用单例模式。
生活中的应用实例
一个生活中的例子可能是总统或首相的角色。在一个国家中,总统或首相在任何特定时间只能有一个。这个人负责做出决策并控制资源。
优点
在内存里只有一个实例,减少了内存开销。
避免对资源的多重占用。
可以全局访问。
缺点
没有接口,扩展困难。
如果要扩展单例对象,只有修改代码,不能遵循“开闭原则”。
使用场景
需要频繁实例化然后销毁的对象。
创建对象时耗时过多或耗资源过多,但又经常用到的对象。
需要定义大量的静态变量和静态方法的环境,类似全局变量和全局函数的场景。
代码举例
以下是一个简单的单例模式的Java代码实现:
java
Copy
public class Singleton {
// 在自己内部定义自己一个实例
private static final Singleton INSTANCE = new Singleton();
// 私有化构造函数,外部无法访问
private Singleton() {}
// 对外提供获取实例的静态方法
public static Singleton getInstance() {
return INSTANCE;
}
}
这就是一个最简单的单例模式实现,这种方式称为饿汉式单例,即类一旦加载,就试图在自己的内存中创建一个实例。这种方式简单直接,在多线程环境下也能保证单例。但缺点是无法做到延迟实例化。

