[架构师训练营] Week03 - 学习总结
设计模式
什么是设计模式?
每一种模式都描述了一种文体的通用解决方案。这种问题在我们的环境中,不停地出现。设计模式是一种可重复使用的解决方案。
一个设计模式的四个部分:
模式的名称:由少量的字组成的名称,有助于表达我们的设计。
待解问题:描述了何时需要运用这种模式,以及运用模式的环境(上下文)
解决方案:描述了组成设计的元素(类和对象), 他们的关系,职责以及合作。但这种解决方案是抽象的,他不代表具体的实现。
结论:运用这种方案所带来的利和弊,主要是指它对系统的弹性,扩展性,和可移植性的影响。
设计模式分类
适应设计模式
Iterator模式 一个一个遍历
Adapter模式 加个适配器以便复用
系统需要使用现有的类,而这个类的接口与我们所需要的不同,常见的场景是数据库适配器(mysql, mongodb)。把某个对象已经提供的方法适配成另外一种接口或者方法。不建议做类适配器,而建议使用对象适配器。
交给子类
Template Method模式 将具体处理交给子类
基类负责算法的轮廓和骨架
子类负责算法的具体实现
Factory Method模式 将实例的生成交给子类
生成实例
Singleton模式 只有一个实例
使用singleton原因:
性能需求:只有一个实例,可以减少实例频繁创建和销毁带来的资源消耗. 这个是性能需求
功能需求:当多个用户使用这个实例的时候,便于进行统一控制(打印机对象)。
Prototype模式 通过复制生成实例
Build模式 组装复杂的实例
AbstractFactory 将关联零件组装成产品
分开考虑
Bridge模式 将类的功能层次跟实现层次分离
Strategy模式 整体地替换算法
通过组合的方法来实现扩展,应用程序针对抽象类去编程,实际执行的却是实现类。
一致性
Composite模式 容器与内容的一致性
Decorator模式 装饰边框与被装饰物的一致性
在不改变对客户端的接口的前提下扩展现有现象的功能。
访问数据结构
Visitor模式 访问数据结构并处理数据
Chain of Responsibility 模式 推卸责任
简单化
Façade模式 简单窗口
Mediator模式 只有一个仲裁者
管理状态
Observer模式 发送状态变化通知
Memento模式 保存对象状态
State模式 用类来保存状态
避免浪费
FlyWeight模式, 共享对象,避免浪费
Proxy模式, 只在必要的时候生成实例
用类来表示
Command模式 命令也是类
Interpreter模式 语法规则也是类
参考:图解设计模式.
评论