架构师训练营第三周 - 学习总结

发布于: 刚刚
架构师训练营第三周 - 学习总结

前两周学习了对面向对象设计的目标(强内聚、低耦合)和原则(OCP, DIP, LSP, SRP, ISP),今周学习常见设计问题的可重复使用的通用解决方案——设计模式

恰当使用设计模式,可以让设计符合设计原则,达到强内聚、低耦合的目标。

设计模式的分类

从功能分

  • 创建模式 - 对类实例化过程进行抽象

  • 结构模式 - 将类或者对象结合在一起形成更大的结构

  • 行为模式 - 对在不同的对象之间划分责任和算法的抽象化

从方式分

  • 类模式 - 以继承的方式实现模式,静态的

  • 对象模式 - 以组合的方式实现模式,动态的

设计模式举例

简单工厂

优点

  • Client 不依赖具体实现

  • 对 Client 实现了 OCP

缺点

  • 对 Factory 未实现 OCP

改进

运行时从配置获取需要实现化的类,对 Factory 也满足 OCP

但缺少编译时类型安全

更完备的方法(也更复杂)是使用 Spring 的容器,应用代码对服务的依赖又容器注入

适配器

当需要使用类的功能,但类的接口与所需的接口不同时,通过适配器模式进行接口的转换

模板方法模式

  • 通过继承进行扩展

  • 基类负责算法的轮廓和骨架

  • 子类负责算法的具体实现

策略模式

  • 将策略使用者与策略的具体实现分离

  • 便于切换不同的策略实现

组合模式

  • 容器与内容的一致性

  • 单个与多个的一致性

  • 递归结构的实现

装饰器模式

  • 在不改变被装饰物接口的前提下扩展现有对象功能

  • 可动态添加多种装饰功能

用户头像

Lost Horizon

关注

给写代码的人写代码 2017.10.17 加入

Clojure

评论

发布
暂无评论
架构师训练营第三周 - 学习总结