设计模式是软件开发中的经典概念,它们提供了可重用的解决方案来应对特定类型的软件设计问题。在 Python 社区,许多开发者和爱好者都在他们的项目中应用了设计模式,以下是一些常见的设计模式及其在 Python 中的应用:
创建型模式
单例模式(Singleton) 单例模式确保一个类只有一个实例,并提供一个访问它的全局点。
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
singleton_instance = Singleton()
工厂方法(Factory Method) 工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。
class Creator:
def factory_method(self):
return ProductA()
class ProductA:
pass
class ConcreteCreator(Creator):
def factory_method(self):
return ProductB()
creator = ConcreteCreator()
product = creator.factory_method()
结构型模式
适配器模式(Adapter) 适配器模式允许将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以一起工作。
class Adaptee:
def specific_request(self):
return "Specific Request"
class Target:
def target_request(self, request):
return "Target Request for: " + request
class Adapter(Target, Adaptee):
def target_request(self, request):
return super().target_request(self.specific_request())
行为型模式
观察者模式(Observer) 观察者模式定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
class Subject:
def __init__(self):
self._observers = []
def register(self, observer):
self._observers.append(observer)
def notify(self):
for observer in self._observers:
observer.update()
class Observer:
def update(self, subject):
pass
class ConcreteObserver(Observer):
def update(self, subject):
print("Observer received notification of change from " + subject.__class__.__name__)
在设计模式中,还有许多其他模式和变体。在 Python 社区中,开发者们经常根据项目需求灵活运用这些模式。
更多关于设计模式的内容,可以参考我们的 设计模式教程。
Python Design Patterns