Python版23种设计模式终极指南:原理+场景+实战代码全覆盖

一、创建型模式(5种)

1. 单例模式(Singleton)

  • 核心思想:确保一个类仅有一个实例。
  • 使用场景:全局配置管理、数据库连接池。
  • Python案例
    class AppConfig:
        _instance = None
        def __new__(cls):
            if not cls._instance:
                cls._instance = super().__new__(cls)
                cls._instance.load_config()
            return cls._instance
        def load_config(self):
            self.settings = {
         
         "theme": "dark", "language": "zh"}
    # 使用
    config1 = AppConfig()
    config2 = AppConfig()
    print(config1 is config2)  # True
    

2. 工厂方法模式(Factory Method)

  • 核心思想:由子类决定创建哪种对象。
  • 使用场景:支付方式选择、日志记录器。
  • Python案例
    from abc import ABC, abstractmethod
    class Payment(ABC):
        @abstractmethod
        def pay(self, amount): pass
    class Alipay(Payment):
        def pay(self, amount): print(f"支付宝支付:{
           
           amount}元")
    class WechatPay(Payment):
        def pay(self, amount): print(f"微信支付:{
           
           amount}元")
    class PaymentFactory(ABC):
        @abstractmethod
        def create_payment(self): pass
    class AlipayFactory(PaymentFactory):
        def create_payment(self): return Alipay()
    # 使用
    factory = AlipayFactory()
    payment = factory.create_payment()
    payment.pay(100)  # 支付宝支付:100元
    

3. 抽象工厂模式(Abstract Factory)

  • 核心思想:创建一组相关对象的接口。
  • 使用场景:跨平台UI组件库。
  • Python案例
    class LinuxButton:
        def render(self): print("Linux风格按钮")
    class MacButton:
        def render(self): print("Mac风格按钮")
    class GUIFactory(ABC):
        @abstractmethod
        def create_button(self): pass
    class LinuxFactory(GUIFactory):
        def create_button(self): return LinuxButton()
    # 使用
    factory = LinuxFactory()
    button = factory.create_button()
    button.render()  # Linux风格按钮
    

4. 建造者模式(Builder)

  • 核心思想:分步骤构建复杂对象。
  • 使用场景:SQL查询构造器、文档生成器。
  • Python案例
    class Pizza:
        def __init__(self):
            self.toppings = []
        def add_topping(self, item):
            self.toppings.append(item)
    class PizzaBuilder:
        def __init__(self):
            self.pizza = Pizza()
        def add_cheese(self):
            self.pizza.add_topping("芝士")
            return self
        def add_pepperoni(self):
            self.pizza.add_topping("意大利辣香肠")
            return self
        def build(self):
            return self.pizza
    # 使用
    pizza = PizzaBuilder().add_cheese().add_pepperoni().build()
    print(pizza.toppings)  # ['芝士', '意大利辣香肠']
    

5. 原型模式(Prototype)

  • 核心思想:通过克隆现有对象创建新对象。
  • 使用场景:对象创建成本高时。
  • Python案例
    import copy
    class Prototype:
        def clone(self):
            return copy.deepcopy(self)
    class Car(Prototype)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值