Kto-Blog

Design Patterns Guide

Implementing 23 design patterns in three categories using Python to help understand programming concepts

Design Patterns Guide - Screenshot 1
Click to view larger
1 / 3

项目简介

这是一个使用 Python 语言实现的设计模式教程项目,详细介绍了 GoF 23 种经典设计模式。每种模式都配有清晰的代码实现、使用场景分析和 UML 类图,是学习面向对象设计和软件架构的优秀资源。

设计模式分类

设计模式 (23)
    ├─► 创建型模式 (5)
    │     • 工厂方法 • 抽象工厂 • 单例 • 建造者 • 原型
    ├─► 结构型模式 (7)
    │     • 适配器 • 桥接 • 组合 • 装饰器 • 外观 • 享元 • 代理
    └─► 行为型模式 (11)
          • 策略 • 模板方法 • 观察者 • 迭代器 • 责任链
          • 命令 • 备忘录 • 状态 • 访问者 • 中介者 • 解释器

创建型模式

1. 单例模式 (Singleton)

确保一个类只有一个实例,并提供全局访问点。

class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

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

定义创建对象的接口,让子类决定实例化哪个类。

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

创建一系列相关或依赖对象的接口。

4. 建造者模式 (Builder)

分步骤创建复杂对象。

5. 原型模式 (Prototype)

通过复制现有对象创建新对象。

结构型模式

6. 适配器模式 (Adapter)

将一个类的接口转换成客户期望的另一个接口。

7. 装饰器模式 (Decorator)

动态地给对象添加额外功能。

def decorator(func):
    def wrapper(*args, **kwargs):
        # 前置处理
        result = func(*args, **kwargs)
        # 后置处理
        return result
    return wrapper

8. 代理模式 (Proxy)

为其他对象提供代理以控制对这个对象的访问。

其他结构型模式

  • 桥接模式 - 分离抽象和实现
  • 组合模式 - 树形结构对象组合
  • 外观模式 - 简化子系统接口
  • 享元模式 - 对象共享以减少内存

行为型模式

9. 策略模式 (Strategy)

定义算法族,分别封装,让它们可以互相替换。

class Strategy:
    def execute(self, data): pass

class ConcreteStrategyA(Strategy):
    def execute(self, data):
        # 算法 A 实现
        pass

10. 观察者模式 (Observer)

对象间的一对多依赖关系,当一个对象改变状态,所有依赖者都会收到通知。

11. 模板方法模式 (Template Method)

定义算法骨架,将某些步骤延迟到子类。

其他行为型模式

  • 责任链模式 - 请求沿链传递
  • 命令模式 - 请求封装成对象
  • 迭代器模式 - 遍历集合对象
  • 中介者模式 - 对象间松耦合通信
  • 备忘录模式 - 对象状态保存与恢复
  • 状态模式 - 对象状态改变行为
  • 访问者模式 - 操作复杂对象结构
  • 解释器模式 - 语法解释

项目特点

  • 清晰的代码实现
  • 详细的使用场景说明
  • UML 类图展示
  • Python 最佳实践
  • 可运行示例代码

学习价值

  • 理解面向对象设计原则
  • 提高代码可维护性
  • 掌握常用架构模式
  • 培养良好的编程习惯
  • 提升代码复用性

适用场景

  • 软件架构学习
  • 面试准备
  • 代码重构参考
  • 团队培训材料
  • 设计决策参考

源代码

查看源代码:Ktovoz/design-pattern-python