Python设计模式是一种解决特定问题的优秀方案,它可以帮助开发者提高代码的可读性、可维护性和可扩展性。以下是一些常见的Python设计模式。
单例模式
单例模式确保一个类只有一个实例,并提供一个全局访问点。
class Singleton: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance singleton1 = Singleton() singleton2 = Singleton() print(singleton1 is singleton2) # 输出 True
工厂模式
工厂模式是一种创建对象的模式,它提供了一种将对象创建的逻辑封装起来的方法。
class Animal: def speak(self): pass class Dog(Animal): def speak(self): return "汪汪汪" class Cat(Animal): def speak(self): return "喵喵喵" class AnimalFactory: def create_animal(self, animal_type): if animal_type == "Dog": return Dog() elif animal_type == "Cat": return Cat() else: raise ValueError("Invalid animal type") factory = AnimalFactory() dog = factory.create_animal("Dog") cat = factory.create_animal("Cat") print(dog.speak()) # 输出 "汪汪汪" print(cat.speak()) # 输出 "喵喵喵"
抽象工厂模式
抽象工厂模式是一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
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(ABC): @abstractmethod def create_animal(self, animal_type): pass class DogFactory(AnimalFactory): def create_animal(self, animal_type): if animal_type == "Dog": return Dog() else: raise ValueError("Invalid animal type") class CatFactory(AnimalFactory): def create_animal(self, animal_type): if animal_type == "Cat": return Cat() else: raise ValueError("Invalid animal type")
建造者模式
建造者模式是一种将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
class Product: def __init__(self, part1, part2, part3): self.part1 = part1 self.part2 = part2 self.part3 = part3 builder = ProductBuilder() product = builder.build_part1("Part 1").build_part2("Part 2").build_part3("Part 3").get_product()
下面是一个简单的介绍,展示了部分常用的设计模式及其在Python中的实现: