Python 模拟实现单例模式需要以下步骤:
1. 确定单例模式类的设计
在单例模式中,只有一个实例对象,因此需要确保该实例对象在整个系统中仅仅创建一次,具体的实现有多种方法,其中一个设计方式是使用装饰器。
2. 实现单例类的获取方法
在单例模式中,单例类只能通过一个静态方法获取,因此需要实现该方法。
3. 验证单例模式的正确性
验证单例模式的正确性,需要通过创建多个单例类对象的方式,确保获取到的对象均指向同一内存地址。
以下是一个 Python 代码实现单例模式的示例,包含两个简单的例子 – LazySingleton 和 EagerSingleton:
LazySingleton 示例
class LazySingleton:
"""
懒汉模式的单例类
"""
_instance = None
def __init__(self, name: str):
self.name = name
@classmethod
def get_instance(cls, name: str):
"""
获取懒汉模式下的单例对象
"""
if not cls._instance:
cls._instance = cls(name)
return cls._instance
以上代码是实现懒汉模式单例类的示例,它采用了延时加载的方式,即在第一次使用时创建单例对象。在懒汉模式下,get_instance 方法需要通过判断实例是否已经创建来决定是否新建实例对象。
EagerSingleton 示例
class EagerSingleton:
"""
饿汉模式的单例类
"""
_instance = EagerSingleton("default") # 创建对象
def __init__(self, name: str):
self.name = name
@classmethod
def get_instance(cls):
"""
获取饿汉模式下的单例对象
"""
return cls._instance
以上代码是实现饿汉模式单例类的示例,它采用了在加载时创建单例对象的方式,在类加载时通过创建实例对象来实现单例设计,因此可以保证线程安全,但可能在初始化时多花费一些时间。
以上两个示例均通过实现 get_instance 静态方法来获取单例模式下的单个实例对象。