设计模式总结
不要将设计模式当成算法去学习,初期可以模仿,但更多的它是一种思想 —— 管理变化,提高复用。
两个手段:分解 vs 抽象。
八大原则
- 依赖倒置原则(DIP)
- 开放封闭原则(OCP)
- 单一职责原则(SRP)
- Liskov 替换原则(LSP)
- 接口隔离原则(ISP)
- 对象组合优于类继承
- 封装变化点
- 面向接口编程
重构技法
- 静态 > 动态
- 早绑定 〉晚绑定
- 继承 〉组合
- 编译时依赖 > 运行时依赖
- 紧耦合 > 松耦合
从封装变化角度对模式分类
有些模式随着时代的进步,现在不怎么常用,如:Builder 中介者 备忘录 (都被一些序列化的方案替代了) 迭代器模式(被泛型编译时多态替换了) 职责链(直接用一些数据结构可以去表达) visitor(使用条件太苛刻,使用要慎重) 命令模式(C++语言中有对象模型,用的比较少。C# 等可以在用。) 解析器模式(用的也不多,简单的文法规则可用)。
对象模型
几乎所有的结构,都可归结为第三种模型。第一种继承和第二种组合内存模型上是一样的(所以,慎用继承多用组合(第三种,组合一个指针。继承转组合。))。
什么时候不用模式
- 代码可读性很差时
- 需求理解还很浅时 // 所以设计模式伴随重构
- 变化没有显现时 // 不要提前预设
- 不是系统的关键依赖点
- 项目没有复用价值时
- 项目将要发布时
经验之谈
- 不要为模式而模式
- 关注抽象类&接口
- 理清变化点和稳定点
- 审视依赖关系
- 要有Framework 和Application的区隔思维
- 良好的设计是演化的结果 // 迭代重构演化
设计模式成长之路
- “手中无剑,心中无剑”:见模式而不知
- “手中有剑,心中无剑”:可以识别模式,作为应用开发人员使用模式
- “手中有剑,心中有剑”:作为框架开发人员为应用设计某些模式
- “手中无剑,心中有剑”:忘掉模式,只有原则
参考:GeekBand
分类:
软件技术
标签:
DesignPattern
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~