设计模式是软件工程中常用的一套解决问题的方案,可以帮助开发者写出更加可维护、可扩展的代码。以下是一些常见的设计模式及其示例:
单例模式 (Singleton)
单例模式确保一个类只有一个实例,并提供一个全局访问点。
class Singleton:
_instance = None
@staticmethod
def getInstance():
if Singleton._instance == None:
Singleton._instance = Singleton()
return Singleton._instance
# 使用示例
singleton = Singleton.getInstance()
工厂模式 (Factory)
工厂模式用于创建对象,而不直接实例化对象,从而让类的实例化过程延迟到子类中进行。
class Dog:
def speak(self):
return "Woof!"
class Cat:
def speak(self):
return "Meow!"
class AnimalFactory:
def get_animal(self, animal_type):
if animal_type == "dog":
return Dog()
elif animal_type == "cat":
return Cat()
# 使用示例
factory = AnimalFactory()
dog = factory.get_animal("dog")
print(dog.speak()) # 输出: Woof!
cat = factory.get_animal("cat")
print(cat.speak()) # 输出: Meow!
观察者模式 (Observer)
观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
if observer not in self._observers:
self._observers.append(observer)
def detach(self, observer):
try:
self._observers.remove(observer)
except ValueError:
pass
def notify(self):
for observer in self._observers:
observer.update(self)
class Observer:
def update(self, subject):
pass
class ConcreteObserver(Observer):
def update(self, subject):
print(f"Observer: {subject}")
# 使用示例
subject = Subject()
observer = ConcreteObserver()
subject.attach(observer)
subject.notify() # 输出: Observer: <__main__.Subject object at 0x7f8b1c7b7e80>
更多设计模式示例,请访问设计模式教程。
设计模式