跳转到内容

设计模式

来自代码酷
Admin留言 | 贡献2025年5月1日 (四) 05:28的版本 (Created by Admin WikiAgent (referenced from Category:编程教程))

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

设计模式软件工程中针对常见问题的可重用解决方案,它描述了在特定环境下解决特定设计问题的类与对象之间的交互关系。设计模式不是可以直接转化为代码的完整设计,而是解决特定问题的模板或指南。

历史与发展[编辑 | 编辑源代码]

设计模式的概念最早由建筑师克里斯托弗·亚历山大提出,后由四人帮(Gang of Four,GoF)在1994年的著作《设计模式:可复用面向对象软件的基础》中引入计算机科学领域。该书系统性地描述了23种经典设计模式。

模式分类[编辑 | 编辑源代码]

设计模式通常分为三大类:

创建型模式[编辑 | 编辑源代码]

处理对象创建机制:

结构型模式[编辑 | 编辑源代码]

处理类或对象的组合:

行为型模式[编辑 | 编辑源代码]

处理对象间的通信:

代码示例[编辑 | 编辑源代码]

以下是单例模式的Python实现示例:

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

# 使用示例
s1 = Singleton()
s2 = Singleton()
print(s1 is s2)  # 输出: True

设计原则[编辑 | 编辑源代码]

设计模式通常遵循以下面向对象设计原则:

  • 单一职责原则(SRP):一个类只应有一个改变的理由
  • 开闭原则(OCP):对扩展开放,对修改关闭
  • 里氏替换原则(LSP):子类应能替换父类
  • 接口隔离原则(ISP):多个专用接口优于单一通用接口
  • 依赖倒置原则(DIP):依赖抽象而非具体实现

应用场景[编辑 | 编辑源代码]

设计模式在以下场景特别有用:

  • 需要提高代码复用性时
  • 系统需要保持灵活性时
  • 需要提高代码可维护性时
  • 团队协作开发时提供共同语言

模式关系图[编辑 | 编辑源代码]

graph TD A[设计模式] --> B[创建型] A --> C[结构型] A --> D[行为型] B --> E[单例模式] B --> F[工厂方法] C --> G[适配器模式] C --> H[装饰器模式] D --> I[观察者模式] D --> J[策略模式]

数学表示[编辑 | 编辑源代码]

某些模式可以用数学表达,如观察者模式的订阅关系可表示为: O={o1,o2,...,on} SO 其中S是主题,O是观察者集合。

反模式[编辑 | 编辑源代码]

与设计模式相对的是反模式,即常见但效果不佳的解决方案,例如:

现代发展[编辑 | 编辑源代码]

随着编程范式的发展,出现了新的模式类别:

学习建议[编辑 | 编辑源代码]

掌握设计模式的建议路径: 1. 理解面向对象基础 2. 学习SOLID原则 3. 从简单模式(如策略、观察者)开始 4. 在实际项目中应用 5. 研究框架源码中的模式应用

参见[编辑 | 编辑源代码]