python 设计模式
时间: 2023-12-20 11:32:34 浏览: 130
python 实现 设计模式
在Python中,设计模式是一种用于解决常见问题的可复用的解决方案。设计模式可以帮助我们更好地组织和管理代码,并提供一种结构化的方法来解决特定类型的问题。
以下是一些常见的Python设计模式:
1. 单例模式:确保一个类只有一个实例,并提供全局访问点。
```python
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super().__new__(cls, *args, **kwargs)
return cls._instance
```
2. 工厂模式:通过一个工厂类来创建对象,而不是直接使用构造函数。
```python
class Shape:
def draw(self):
pass
class Circle(Shape):
def draw(self):
print("Drawing a circle")
class Rectangle(Shape):
def draw(self):
print("Drawing a rectangle")
class ShapeFactory:
def create_shape(self, shape_type):
if shape_type == "circle":
return Circle()
elif shape_type == "rectangle":
return Rectangle()
else:
raise ValueError("Invalid shape type")
factory = ShapeFactory()
circle = factory.create_shape("circle")
circle.draw() # 输出:Drawing a circle
```
3. 观察者模式:定义了一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。
```python
class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
self._observers.append(observer)
def detach(self, observer):
self._observers.remove(observer)
def notify(self):
for observer in self._observers:
observer.update()
class Observer:
def update(self):
pass
class ConcreteObserver(Observer):
def update(self):
print("Received notification")
subject = Subject()
observer = ConcreteObserver()
subject.attach(observer)
subject.notify() # 输出:Received notification
```
阅读全文