系统架构设计师知识清单7
第7章 23种设计模式
这一章内容对于软件工程师来说是非常重要的,在综合知识考试中通常考的不是很难,有基础的理解即可(至少要知道模式名所属的类型和基本应用),也很适合写进论文里(在设计架构时,系统某个部分功能的使用了某种/某些设计模式实现,简单说明一下原因和效果)。
1 设计模式的组成元素
模式名、问题/意图、情景、动机、解决方案、示例、结果情景、基本原理、相关模式、已知应用
2 设计模式分类
创建型:抽象对象实例化过程
结构型:如何组合已有的类和对象
行为型:对象之间的职责及其提供的服务的分配
创建型包括5种
(1)抽象工厂模式(Abstract Factory):在不指定具体类的情况下,为创建一系列相关或相互依赖的对象提供一个接口
(2)工厂模式(Factory):不修改代码的情况下引入新类
(3)建造者模式(Builder):将复杂对象的构建与其具体表示相分离
(4)原型模式(Prototype):在不了解要创建对象的类以及如何创建等细节情况下创建对象
(5)单例模式(Singleton):确保一个类只有一个实例
结构型包括7种
(1)适配器模式(Adapter):充当两个类之间的媒介,使具有不同接口的类协同使用
(2)桥接模式(Bridge):将一个复杂的组件分成两个独立但又相关的层次
(3)组合模式(Composite):创建树型层次结构来改变复杂性
(4)装饰器模式(Decorator):不改变对象外观和功能的情况下添加或者删除对象功能
(5)外观模式(Facade):为系统中的一组接口提供一个统一的接口
(6)享元模式(Flyweight):通过共享对象减少系统中的低等级低、详细的对象数目(比如线程池、数据库连接池)
(7)代理模式(Proxy):为控制对初始对象的访问提供一个代理或占位符
行为型包括11种
(1)责任链模式(Responsibility Chain):消息可以定位到处理它的对象
(2)命令模式模式(Command):通过执行动作来参数化对象
(3)解释器模式(Interpreter):解释定义其语法的语言
(4)迭代器模式(Iterator):为集合的有序访问提供了一致的方法(最典型的比如MapReduce中的Iterator)
(5)中介者模式(Mediator):管理对象间消息分布
(6)备忘录模式(Mememto):保持对象状态的快照,对象可以返回其最初状态
(7)观察者模式(Observer):广播消息(比如vuex)
(8)状态模式(State):对象在内部状态改变时,变更具体行为,并且修改其类
(9)策略模式(Strategy):相似的类只在行为方面有所区别
(10)模版模式(Template):不修改算法结构时让子类重定义算法特定步骤
(11)访问者模式(Visitor):集中相关操作并排除不相关的操作