登录社区云,与社区用户共同成长
邀请您加入社区
设计模式三大类
🔄 行为型(11种) 关注对象间的通信
责任链 Chain of Responsibility
命令 Command
迭代器 Iterator
中介者 Mediator
备忘录 Memento
观察者 Observer
状态 State
策略 Strategy
模板方法 Template Method
访问者 Visitor
解释器 Interpreter
🧱 结构型(7种) 关注类与对象的组合
适配器 Adapter
桥接 Bridge
组合 Composite
装饰器 Decorator
门面 Facade
享元 Flyweight
代理 Proxy
🏗️ 创建型(5种) 关注对象创建过程
单例 Singleton
工厂方法 Factory Method
抽象工厂 Abstract Factory
建造者 Builder
原型 Prototype
核心思想:设计模式不是背诵的套路,而是从变化类型推导出的必然解法。
行为步骤固定 子步骤变化
算法族可互换 运行时切换
请求需沿链处理 处理者不确定
需运行时注册 查找处理器
需统一创建接口 创建逻辑变化
需动态添加职责 不影响其他对象
需统一接口访问 子系统复杂
抽象与实现独立变化
需一对多依赖通知
需统一接口兼容 已有接口不匹配
需延迟创建开销大的对象
🎯 识别变化类型
策略模式 Strategy
注册表模式 Registry
装饰器模式 Decorator
门面模式 Facade
桥接模式 Bridge
观察者模式 Observer
适配器模式 Adapter
代理模式 Proxy
四步推演法:从需求到模式
不满足 回退
📋 Step 1:识别变化点 ——————— 什么在变? 变化的频率? 变化的维度?
🔍 Step 2:分析约束条件 ——————— 性能要求? 扩展方向? 依赖关系? 团队规模?
📐 Step 3:选择设计结构 ——————— 变化类型 → 设计模式 约束条件 → 模式变体 依赖关系 → 组合方式
✅ Step 4:验证与评估 ——————— 开闭原则? 耦合度/内聚度? 扩展成本? 理解成本?
单一模式有局限,组合模式威力大:
组合的价值
常见模式组合
模式组合公式
完整方案 = 接口(契约) + 抽象类(模板) + 实现类(策略) + 注册表(路由) = WHAT + HOW-T + HOW-D + WHERE
策略 + 模板方法 接口定义契约 + 抽象类复用共性
策略 + 注册表 接口定义契约 + 运行时路由
策略 + 模板 + 注册表 完整的三级体系
责任链 + 策略 链式处理 + 每节点策略
装饰器 + 策略 动态增强 + 算法互换
门面 + 策略 简化接口 + 内部灵活
1+1 > 2 解决单一模式无法解决的问题
每个模式负责一个维度 职责清晰
组合可渐进式引入 不必一步到位
✅ 对应正模式
🚫 常见反模式
重构
上帝接口 一个接口包含所有方法 → 违反ISP
过度继承 继承层级超过3层 → 脆弱基类
硬编码策略 if-else选择策略 → 违反OCP
无模板的重复 多个实现大量重复逻辑 → 违反DRY
无注册表的路由 手动创建策略实例 → 违反DIP
过早优化 为假设的性能问题设计 → 违反YAGNI
魔法数字 硬编码常量散落各处 → 违反可维护性
接口隔离 按职责拆分接口
组合优于继承 委托+策略替代继承
策略模式+注册表 Map路由替代if-else
模板方法 抽象类封装共性
依赖注入 容器管理生命周期
简单设计 先正确再优化
常量提取 集中管理配置
智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。
更多推荐
100.STM32低功耗设计实战:从原理到代码实现
【proteus仿真】基于STM32单片机矿井环境监测系统设计(仿真图+程序)
Node.js快速入门+demo案例
扫一扫分享内容
为遵守国家网络实名制规定,未绑定将限制内容发布与互动
所有评论(0)