懒汉式单例模式和饿汉式单例模式的异同
时间: 2023-11-28 22:44:05 浏览: 127
以下是懒汉式单例模式和饿汉式单例模式的异同:
相同点:
1. 都是单例模式,即保证一个类只有一个实例对象。
2. 都使用了私有的构造函数,防止外部创建实例对象。
3. 都使用了静态变量来保存实例对象。
不同点:
1. 创建对象的时机不同:饿汉式在类加载时就创建了对象实例,而懒汉式是在使用时才创建。
2. 线程安全性不同:饿汉式天生是线程安全的,因为在类加载时就已经创建了对象实例,而懒汉式需要考虑线程安全问题,可以使用synchronized关键字或者双重检查锁定等方式来保证线程安全。
3. 性能不同:饿汉式在类加载时就创建了对象实例,所以在访问速度和反应时间上都比懒汉式快,但是如果这个实例一直没有被使用,那么就会造成内存浪费。而懒汉式只有在使用时才会创建对象实例,所以在内存占用上比饿汉式要低,但是在访问速度和反应时间上会稍微慢一些。
下面是懒汉式单例模式的示例代码:
```python
class Singleton:
__instance = None
def __init__(self):
if Singleton.__instance != None:
raise Exception("该类已经实例化过了")
else:
Singleton.__instance = self
@staticmethod
def getInstance():
if Singleton.__instance == None:
Singleton()
return Singleton.__instance
```
下面是饿汉式单例模式的示例代码:
```python
class Singleton:
__instance = Singleton()
def __init__(self):
if Singleton.__instance != None:
raise Exception("该类已经实例化过了")
else:
Singleton.__instance = self
@staticmethod
def getInstance():
return Singleton.__instance
```
阅读全文