📅  最后修改于: 2023-12-03 15:34:32.527000             🧑  作者: Mango
设计模式是解决特定问题的可重用方案集合,它为我们提供了一种在软件开发中解决常见问题的思路。Python语言中也有很多与设计模式相关的库和框架。
单例模式是最常见的设计模式之一,它在运行时只创建一个对象实例,并提供了一个全局访问点。这种模式常被用于配置文件、日志系统、数据库连接等需要全局共享的场景。
class Singleton:
_instance = None
def __new__(cls):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
工厂模式是根据不同的参数,返回不同的类实例的一种设计模式。工厂模式可以为复杂的程序创建简单的API,将复杂性留给工厂,而API将只需执行简单的操作。
class Dog:
def __init__(self):
self.name = 'Dog'
class Cat:
def __init__(self):
self.name = 'Cat'
class PetFactory:
def get_pet(self, pet_type):
if pet_type == 'dog':
return Dog()
elif pet_type == 'cat':
return Cat()
else:
raise ValueError(f"Invalid pet type: {pet_type}")
装饰器模式是在不修改原有代码的情况下,增加新功能的一种设计模式。通过在原有代码上添加新的装饰层,而不是修改原有代码,我们可以很容易地将新功能逐层叠加到我们的代码中。
def log(func):
def wrapper(*args, **kwargs):
print(f"[log] calling {func.__name__} with args={args}, kwargs={kwargs}")
return func(*args, **kwargs)
return wrapper
@log
def my_function():
pass
观察者模式用于监控对象的状态变化。当被监测的对象状态发生变化时,通知已经注册的所有观察者。这种模式常用于GUI编程中,用于实现各种消息传递机制。
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, value):
for observer in self._observers:
observer.update(value)
class Observer:
def __init__(self):
pass
def update(self, value):
print(value)
设计模式是最好的实践方式,通过应用设计模式,我们可以提高代码的可读性和可维护性,我们也可以更好地理解和学习Python语言。