Python 是一种功能强大的编程语言,广泛应用于各种领域。设计模式是解决常见问题的解决方案,它们可以帮助开发者写出更清晰、更可维护的代码。以下是一些常见的 Python 设计模式及其应用。

单例模式 (Singleton)

单例模式确保一个类只有一个实例,并提供一个全局访问点。

class Singleton:
    _instance = None

    @staticmethod
    def getInstance():
        if Singleton._instance == None:
            Singleton._instance = Singleton()
        return Singleton._instance

装饰器模式 (Decorator)

装饰器模式允许向一个现有的对象添加新的功能,而无需修改其结构。

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

Python Decorator

工厂模式 (Factory)

工厂模式提供了一种创建对象的方法,而不必指定具体类。

class Dog:
    def speak(self):
        return "Woof!"

class Cat:
    def speak(self):
        return "Meow!"

def get_pet(pet="dog"):
    pets = Dog(), Cat()
    return pets[pet.__name__]

my_pet = get_pet()
print(my_pet.speak())

Python Factory

观察者模式 (Observer)

观察者模式定义了对象间的一对多依赖关系,当一个对象改变状态,所有依赖于它的对象都会得到通知并自动更新。

class Observable:
    def __init__(self):
        self._observers = []

    def register(self, observer):
        self._observers.append(observer)

    def unregister(self, observer):
        self._observers.remove(observer)

    def notify(self, *args, **kwargs):
        for observer in self._observers:
            observer(*args, **kwargs)

class Observer:
    def update(self, *args, **kwargs):
        pass

# 使用示例
subject = Observable()
observer1 = Observer()
observer2 = Observer()

subject.register(observer1)
subject.register(observer2)

subject.notify("Hello", "World!")

Python Observer

更多设计模式和示例,请访问 Python 设计模式指南