本文目录导读:
设计模式是软件开发中的一种经验总结,它为解决特定问题提供了一种可重用的解决方案,作为一名优秀的评测编程专家,掌握设计模式将有助于提高你的编程技能,提升项目质量,以及在团队中更好地协作,本文将介绍一些常见的设计模式及其应用场景,帮助你更好地理解和运用这些模式。
单例模式(Singleton)
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点,这种模式适用于那些需要频繁创建和销毁的对象,例如数据库连接、线程池等,通过使用单例模式,可以避免因为创建多个实例而导致的资源浪费和性能下降。
class Singleton: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance
二、工厂方法模式(Factory Method)
工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类,在实际应用中,这可以使得代码更加灵活,易于扩展和维护。
from abc import ABC, abstractmethod class Animal(ABC): @abstractmethod def speak(self): pass class Dog(Animal): def speak(self): return "汪汪" class Cat(Animal): def speak(self): return "喵喵" class AnimalFactory: @staticmethod def create_animal(animal_type): if animal_type == "Dog": return Dog() elif animal_type == "Cat": return Cat() else: raise ValueError("Invalid animal type")
观察者模式(Observer)
观察者模式是一种行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新,观察者模式可以用于实现事件驱动、广播等场景。
from abc import ABC, abstractmethod import threading import time class Subject(ABC): @abstractmethod def register_observer(self, observer): pass @abstractmethod def remove_observer(self, observer): pass @abstractmethod def notify_observers(self): pass class ConcreteSubject(Subject): _observers = [] _data = None def register_observer(self, observer): self._observers.append(observer) return self._observers.count(observer) > 0 and True or False def remove_observer(self, observer): self._observers.remove(observer) return self._observers.count(observer) > 0 and True or False def notify_observers(self): for observer in self._observers: observer.update(self) time.sleep(0.1)