设计模式总结

不要将设计模式当成算法去学习,初期可以模仿,但更多的它是一种思想 —— 管理变化,提高复用

两个手段:分解 vs 抽象

八大原则

  1. 依赖倒置原则(DIP)
  2. 开放封闭原则(OCP)
  3. 单一职责原则(SRP)
  4. Liskov 替换原则(LSP)
  5. 接口隔离原则(ISP)
  6. 对象组合优于类继承
  7. 封装变化点
  8. 面向接口编程

重构技法

  • 静态 > 动态
  • 早绑定 〉晚绑定
  • 继承 〉组合
  • 编译时依赖 > 运行时依赖
  • 紧耦合 > 松耦合

从封装变化角度对模式分类

有些模式随着时代的进步,现在不怎么常用,如:Builder 中介者 备忘录 (都被一些序列化的方案替代了) 迭代器模式(被泛型编译时多态替换了) 职责链(直接用一些数据结构可以去表达) visitor(使用条件太苛刻,使用要慎重) 命令模式(C++语言中有对象模型,用的比较少。C# 等可以在用。) 解析器模式(用的也不多,简单的文法规则可用)。

对象模型

几乎所有的结构,都可归结为第三种模型。第一种继承和第二种组合内存模型上是一样的(所以,慎用继承多用组合(第三种,组合一个指针。继承转组合。))。

什么时候不用模式

  • 代码可读性很差时
  • 需求理解还很浅时 // 所以设计模式伴随重构
  • 变化没有显现时 // 不要提前预设
  • 不是系统的关键依赖点
  • 项目没有复用价值时
  • 项目将要发布时

经验之谈

  • 不要为模式而模式
  • 关注抽象类&接口
  • 理清变化点和稳定点
  • 审视依赖关系
  • 要有Framework 和Application的区隔思维
  • 良好的设计是演化的结果 // 迭代重构演化

设计模式成长之路

  • “手中无剑,心中无剑”:见模式而不知
  • “手中有剑,心中无剑”:可以识别模式,作为应用开发人员使用模式
  • “手中有剑,心中有剑”:作为框架开发人员为应用设计某些模式
  • “手中无剑,心中有剑”:忘掉模式,只有原则




参考:GeekBand

posted @   double64  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示