设计模式是软件开发中的经典概念,它们提供了可重用的解决方案来应对特定类型的软件设计问题。在 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