Course Syllabus
13周系统学习,从模式认知到灵活运用于真实项目
教学内容
Creational Patterns · 提供创建对象的机制,提升已有代码的灵活性和可复用性
什么是设计模式 · GoF四人组 · 模式的分类与目的 · 学习设计模式的意义 · 模式的争议与局限性
定义一个创建对象的接口,由子类决定实例化哪个类 · Dialog + Button 跨平台GUI实例 · 与直接new的区别
创建一系列相关对象的接口,无需指定具体类 · Button + Checkbox 双产品族 · MacOS / Windows 双主题实例
分步骤创建复杂对象 · Car + CarManual 双产品实例 · 主管(Director)控制构建顺序 · 链式调用API
通过复制现有实例创建新对象 · Shape 层次结构 · Cloneable接口 · 原型注册站(Prototype Cache)
保证一个类只有一个实例并提供全局访问点 · 线程安全问题 · 懒加载 · DCL(双检锁)实现
Structural Patterns · 将对象和类组装成较大结构,并同时保持结构的灵活和高效
为复杂子系统提供统一简单接口 · 视频转换库实例 · 子系统与Facade的交互流程 · 解耦客户端与子系统
将对象组合成树状结构,整体与部分一致处理 · Shape图形层次 · CompoundShape复合图形 · 递归结构
共享细粒度对象,大幅减少内存消耗 · Tree + TreeType 实例 · 渲染百万棵树的内存对比 · 内在/外在状态
使不兼容接口能够相互合作 · RoundHole + SquarePeg 实例 · 类适配器 vs 对象适配器 · 继承 vs 组合
为对象提供替代品,控制对原对象的访问 · YouTube缓存代理实例 · 远程代理 · 虚代理 · 保护代理
Behavioral Patterns · 负责对象间的高效沟通和职责委派
将请求沿着处理者链发送,直到某个处理者处理它 · 认证中间件链 · Throttling → UserExists → RoleCheck
对象内部状态改变时改变其行为 · 媒体播放器状态机 · LockedState / ReadyState / PlayingState · 状态转换动画
评分标准