设计模式是软件工程中常用的一套解决问题的方案,可以帮助开发者写出更加可维护、可扩展的代码。以下是一些常见的设计模式及其示例:

单例模式 (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>

更多设计模式示例,请访问设计模式教程

设计模式