单例模式与多例模式的创建及使用
时间: 2023-12-25 17:03:01 浏览: 36
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。单例模式通常用于管理全局状态或提供共享资源。
创建单例模式需要以下步骤:
1. 将类的构造函数声明为私有的,以防止外部代码创建新的实例。
2. 在类中创建一个静态方法,该方法将返回类的唯一实例。
3. 在静态方法中,如果类的实例不存在,则创建一个新的实例,然后返回该实例。
4. 如果类的实例已经存在,则直接返回该实例。
以下是一个示例单例模式的实现:
```python
class Singleton:
_instance = None
def __new__(cls):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
```
多例模式是一种创建型设计模式,它允许创建多个类的实例,但是实例的数量是有限的,并且由该类的开发者预先设置。多例模式通常用于限制系统中某些资源的数量。
创建多例模式需要以下步骤:
1. 在类中创建一个静态属性,该属性将存储所有实例的列表。
2. 在类中创建一个静态方法,该方法将返回类的下一个可用实例。
3. 在静态方法中,使用类的实例列表来查找下一个可用实例。如果没有可用实例,则创建一个新的实例,并将其添加到实例列表中。
4. 在使用实例时,必须从静态方法中获取实例,而不是使用类的构造函数。
以下是一个示例多例模式的实现:
```python
class Multiton:
_instances = {}
_max_instances = 2
def __new__(cls, instance_id):
if len(cls._instances) < cls._max_instances:
if instance_id not in cls._instances:
cls._instances[instance_id] = super().__new__(cls)
return cls._instances[instance_id]
else:
raise ValueError("Max number of instances reached.")
```
在上面的示例中,Multiton 类允许创建最多两个实例。在创建实例时,必须提供一个 instance_id 参数,以便区分不同的实例。如果尝试创建超过两个实例,则会引发 ValueError 异常。