【软考】上午题7-设计模式-中级软件设计师备考笔记
- 为复用成功的设计采用设计模式
创建型设计模式
工厂方法模式(类模式)
- 意图,定义使类的实例化延迟到子表
抽象工厂模式
- 意图,创造一系列接口,无需执行他们具体的类,以便让一系列对象联合使用
- 系统独立于产品创建、组成和表示
建造者模式 Builder
- 意图,将复杂对象的构建和表示分离,同样的构建过程创建不同表示
原型模式 Prototype
- 让对象复制自身
- 系统独立于对象创建、构成和表示
单例模式 Singleton
- 保证类仅有一个实例,提供一个全局访问点
结构型设计模式
适配器模式(可能有类模式,会用的多重继承,但很少) Adapter
- 意图,把一个类接口转换成客户希望的例外一个接口
- 想使用一个已有类的接口,但接口不符合要求
桥接模式 Bridge
- 意图,将抽象部分与实现部分分离
组合模式 Composite
- 意图,把对象组合成树型结构表现部分-整体的层次结构,使用具有一致性(一个方法处理不同对象)
装饰模式 Decorator
- 意图,动态给对象添加一些额外职责
- 不影响其他对象,动态、透明地给对象添加职责
外观模式 Facade
- 意图,给子系统的一组接口提供一个一致的界面
- 适用给复杂子系统提供简单接口,以及客户与抽象类实现部分有很大依赖性,还有定义子系统每层入口点
享元模式 Flyweight
- 意图,支持大量细粒度(细分)对象
- 适用使用大量对象,有很大存储开销,删除外部状态,用较少的共享对象代替多组对象
代理模式 Proxy
- 意图,为其他对象提供代理控制对这个对象的访问
- 适用于用通用复杂的对象指针代替简单的指针
行为型设计模式
- PS:解释器和模板方法是类模式
责任链模式
- 意图,避免请求的发送者和接收者的耦合关系,延链传递请求
- 适用于不明确接收者,自动确定处理请求的对象
命令模式 Command
- 意图,把请求封装对象,用不同请求对对象参数化,对请求排队、日志、撤回操作
- 适用于参数化对象、不同时刻指定排列执行请求、取消操作、修改日志
中介者模式 Mediator
- 意图,封装一系列交互
- 适用于对象通信方式复杂
备忘录模式 Memento
- 意图,不破坏封装性的前提下,捕获对象内部状态,方便回复
- 保存状态,方便恢复
观察者模式 Observer
- 意图,定义一种一对多的依赖关系,状态改变时,依赖的对象都得到通知并更新(PS subject知道它的观察者)
- 适用于一个对象要改变/通知其他对象,不知具体多少对象
状态模式 State
- 意图,让一个对象在内部状态改变时改变行为
- 适用于用庞大多分支的条件语句,依赖于该对象的状态
策略模式 Strategy
- 意图,定义一系列算法,封装起来,是算法可以独立于客户端变化
- 适用于相关类仅行为有异,使用一个算法不同变体
模板方法模式 Template Method
- 意图,定义操作的算法骨架
- 父类定义抽象原语操作(基本操作)
适用于实现算法不变部分,可变部分子类实现,子类可拓展 访问者模式 Vistor
- 意图,对某对象结构中各元素的操作
- 适用于一个对象结构有很多类,有不同的接口,用户对对象实施依赖具体类的操作(多态accept)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!