Lesson 3 设计模式 心得笔记
上周学习了面向对象设计的目标(强内聚、低耦合)和原则(OCP, DIP, LSP, SRP, ISP),今周学习常见设计问题的可重复使用的通用解决方案——设计模式。
使用设计模式,可以让设计符合设计原则,达到强内聚、低耦合的目标。
设计模式的分类
从功能分
创建模式 - 对类实例化过程进行抽象
结构模式 - 将类或者对象结合在一起形成更大的结构
行为模式 - 对在不同的对象之间划分责任和算法的抽象化
从方式分
类模式 - 以继承的方式实现模式,静态的
对象模式 - 以组合的方式实现模式,动态的
设计模式举例
简单工厂
优点 Client 不依赖具体实现 对 Client 实现了 OCP
缺点 对 Factory 未实现 OCP
改进
运行时从配置获取需要实现化的类,对 Factory 也满足 OCP
但缺少编译时类型安全
更完备的方法(也更复杂)是使用 Spring 的容器,应用代码对服务的依赖又容器注入
适配器
当需要使用类的功能,但类的接口与所需的接口不同时,通过适配器模式进行接口的转换
模板方法模式
通过继承进行扩展
基类负责算法的轮廓和骨架
子类负责算法的具体实现
策略模式
将策略使用者与策略的具体实现分离
便于切换不同的策略实现
组合模式
容器与内容的一致性
单个与多个的一致性
递归结构的实现
装饰器模式
在不改变被装饰物接口的前提下扩展现有对象功能
可动态添加多种装饰功能
这周 还学到了 反应式编程框架 Flower 的设计 知识点很多以后再总结吧
评论