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 设计模式指南。