请写出懒汉式单例和饿汉式单例的区别
时间: 2024-06-13 13:05:51 浏览: 124
以下是懒汉式单例和饿汉式单例的区别:
1. 饿汉式单例在类加载时就进行了实例化,而懒汉式单例则是在第一次使用时才进行实例化。
2. 饿汉式单例没有加锁,因此执行效率比较高,但是会占据空间,浪费内存。懒汉式单例一般使用都会加同步锁,效率比饿汉式单例差,但是不会浪费内存。
3. 饿汉式单例适用于单例对象较小且在系统中频繁使用的情况,而懒汉式单例适用于单例对象较大或者在系统中不经常使用的情况。
下面是懒汉式单例和饿汉式单例的Python代码实现:
懒汉式单例:
```python
class Singleton:
__instance = None
@staticmethod
def getInstance():
if Singleton.__instance == None:
Singleton()
return Singleton.__instance
def __init__(self):
if Singleton.__instance != None:
raise Exception("This class is a singleton!")
else:
Singleton.__instance = self
```
饿汉式单例:
```python
class Singleton:
__instance = Singleton()
@staticmethod
def getInstance():
return Singleton.__instance
```
阅读全文