编写单例模式的代码

博客介绍了单例模式代码的编写,分三步完成:将构造函数私有化,在类的内部创建实例,提供获取唯一实例的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写单例模式的代码

编写单例模式的代码其实很简单,就分了三步:

将构造函数私有化
在类的内部创建实例
提供获取唯一实例的方法

### 单例模式代码示例 #### Java中的单例模式实现 在Java中,可以通过懒加载或急切初始化来创建单例类。对于急切初始化的情况: ```java public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } } ``` 这种方式确保了实例化过程简单明了,在程序启动时就创建了一个`Singleton`对象[^2]。 另一种常见的懒加载方式如下所示: ```java public class Singleton { private static volatile Singleton uniqueInstance; private Singleton() {} public static synchronized Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } } ``` 这段代码展示了如何通过延迟加载的方式创建唯一的`Singleton`实例,并利用同步方法防止多线程环境下的竞争条件[^1]。 #### Python中的单例模式实现 Python提供了多种实现单例模式的方法之一是重写`__new__()`魔术函数: ```python class Singleton(object): _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs) return cls._instance ``` 此版本的单例模式确保每次调用构造器都会返回相同的对象实例[^4]。 另外一种基于共享状态的设计被称为Borg模式,它让所有实例拥有相同的状态字典(`__dict__`)而不必严格控制实例的数量: ```python class Borg: _shared_state = {} def __init__(self): self.__dict__ = self._shared_state ``` 这种方法实现了不同实例间的数据一致性,而不仅仅是单一实例的存在形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值