实现一个单例模式 (Singleton)

推荐答案

-- -------------------- ---- -------
----- --------- -
  ------------- -
    -- --------------------- -
      ------------------ - -----
    -
    ------ -------------------
  -

  ------ ------------- -
    -- --------------------- -
      ------------------ - --- ------------
    -
    ------ -------------------
  -
-

-- ----
----- --------- - --- ------------
----- --------- - --- ------------
--------------------- --- ----------- -- ----

----- --------- - ------------------------
----- --------- - ------------------------
--------------------- --- ----------- -- ----

本题详细解读

单例模式的概念

单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式通常用于管理共享资源,例如数据库连接、线程池等。

实现思路

  1. 构造函数控制实例化:在构造函数中检查是否已经存在实例,如果不存在则创建实例并保存,否则返回已存在的实例。
  2. 静态方法获取实例:通过静态方法 getInstance 来获取单例实例,确保全局只有一个实例。

代码解析

  • 构造函数constructor 方法中通过检查 Singleton.instance 是否存在来控制实例的创建。如果不存在,则将当前实例赋值给 Singleton.instance,否则直接返回已存在的实例。
  • 静态方法getInstance 方法通过静态方式调用,确保在类外部可以通过 Singleton.getInstance() 获取单例实例。

使用场景

  • 当需要确保一个类只有一个实例时,例如全局配置管理、日志记录器等。
  • 当需要控制资源访问时,例如数据库连接池、线程池等。

注意事项

  • 单例模式在多线程环境下可能会遇到线程安全问题,需要额外处理。
  • 单例模式可能会导致代码的耦合性增加,使用时需谨慎。
纠错
反馈