跳到主要内容

设计模式

提示

设计模式考点:分类、应用场景、设计模式的图形

系统分层

  • 架构模式:软件设计中的高层决策,例如 C/S 结构就属于架构模式,架构模式反映了软件系统过程中所做的基本设计决策。

  • 设计模式:每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,就能一次又一次地使用该方案而不必做重复劳动。设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的设计和体系结构。四个基本要素:模式名称、问题(应该在何时使用模式)、解决方案(设计的内容)、效果(模式应用的效果)

  • 惯用法:是最底层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述 构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-技术就是 C++语言中的一种惯用法。

设计模式

创建型设计模式用来创建对象
创建型设计模式定义记忆关键字
Abstract Factory
抽象工厂模式
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类抽象接口
Factory Method
工厂方法模式
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。使得子类实例化过程推迟子类决定实例化
Builder
建造器模式
将一个复杂类的表示与其构造相分离,使得相同的建造过程能够得出不同的表示类和构造分离
Prototype
原型模式
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象原型实例,拷贝
Singleton
单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点唯一实例
结构型设计模式用来描述类和对象之间是如何组织的
结构型设计模式定义记忆关键字
Adapter
适配器模式
将一个类的接口转换成用户希望得到的另一种接口转换,兼容接口
Bridge
桥接模式
将类的抽象部分和它的实现部分分离开来,使它们可以独立的变化抽象和实现分离
Composite
组合模式
将对象组合成树型结构以表示 “整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。整体-部分,树形结构
Decorator
原型模式
动态的给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活附加职责
Facade
外观模式
定义一个高层接口,为子系统中的一组接口提供一直的外观,从而简化了该子系统的使用对外统一接口,比如智能家具的应用场景
Flyweight
享元模式
提供支持大量细粒度对象共享的有效方法细粒度,共享(一般用于汉字、语音识别)
Proxy
代理模式
为其他对象提供一种代理以控制这个对象的访问代理控制,比如快捷方式
行为型设计模式描述类和对象的交互行为
行为型设计模式定义记忆关键字
Chain of Responsibility
职责链模式
通过给多个对象处理请求的的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来传递请求、职责、链接(比如请假流程)
Command
命令模式
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作日志记录,可撤销
Interpreter
解释器模式
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子解释器、虚拟机
Iterator
迭代器模式
提供了一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示顺序访问,不暴露内部
Mediator
中介者模式
用一个中介对象来封装一系列的对象交互。它使个对象不需要显式地互相调用,从而达成低耦合,还可以独立的改变对象间的交互不直接引用
Memento
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态。保存、恢复
Observer
观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新通知、自动更新
State
状态模式
允许一个对象在其内部状态改变时改变它的行为状态变成类
Strategy
策略模式
定义一系列算法,把它们一个个封装起来,并且使它们之间可以互相替换,从而让算法可以独立于使用它的用户而变化。算法替换
Template Method
模板方法模式
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤。
Visitor
访问者模式
表示一个作用与某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作数据和操作分离