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