设计模式概述
2024/6/14...大约 6 分钟
概览
创建型模式主要用于创建对象,为设计类实例化新对象提供指南。,其代表有Singleton模式等;
结构型模式主要用于处理类或对象的组合,为类如何设计以形成更大的结构提供指南。,其代表有 Adapter 模式等;
行为型模式主要用于描述类或对象的交互以及职责的分配,为类之间交互以及分配责任的方式提供指南。,其代表有Visitor模式等。
| 模式分类 | 个数 | 模式名称 |
|---|---|---|
| 创建型 | 5 | 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式 |
| 结构型 | 7 | 桥接模式、代理模式、组合模式、适配器模式、享元模式、装饰模式、外观模式(门面模式) |
| 行为型 | 11 | 模板方法模式、命令模式、迭代器模式、观察者模式、中介模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式 |
速记:
创建型:单抽元件厂
结构型:姓桥的代理,他组合适配器,(他的儿子)享元(拿回家)装饰外观。

行为型:多次(迭:多次的意思,迭代模式)命令(命令模式)、责(责任链模式)备(备忘录模式)中(中介者模式),车(策略模式)模(模板方法模式)见(观察者模式)状(状态模式),方(访问者模式)解释(解释器模式)。

| 分类 | 模式 | 英文 | 音标 | 简述 | 记忆关键字 |
|---|---|---|---|---|---|
| 单例模式 | Singleton | ||||
| 工厂模式 | Factory | ||||
| 抽象工厂模式 | Abstract Factory | ||||
| 建造者模式 | Builder | ||||
| 原型模式 | Prototype | /ˈprəʊtətaɪp/ | |||
| 结构 | 桥接模式 | Bridge | 将抽象部分与它的实现部分分离,使它们都可以独立地变化 | 抽象和实现分离 | |
| 结构 | 代理模式 | Proxy | 在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。 为其他对象提供一种代理以控制这个对象的访问 | 代理控制 | |
| 结构 | 组合模式 | Composite | /ˈkɒmpəzɪt/ | 将一组对象组织(Compose)成树形结构,以表示一种“部分 - 整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 | 整体-部分,树形结构 |
| 结构 | 适配器模式 | Adapter | 将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作 | 转换,兼容接口 | |
| 结构 | 享元模式 | Flyweight | 提供支持大量细粒度对象共享的有效方法。 主要用于减少创建对象的数量,以减少内存占用和提高性能。 | 细粒度,共享 | |
| 结构 | 装饰模式 | Decorator | /ˈdekəreɪtə(r)/ | 动态的给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活。 将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为 | 附加职责 |
| 结构 | 外观模式 | Facade | 定义一组高层接口,为子系统提供统一的接口,让子系统更易用。 | 对外统一接口 | |
| 行为 | 迭代模式 | Iterator | 提供一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示 | 顺序访问,不暴露内部 | |
| 行为 | 命令模式 | Command | 将一个请求封装成一个对象,从而可以用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作 | 日志记录、可撤销 | |
| 行为 | 责任链模式 | Chain Of Responsibility | 通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求 | 传递请求、职责链接 | |
| 行为 | 备忘录模式 | Memento | /məˈmentəʊ/ | 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态 | 保存,恢复 |
| 行为 | 中介者模式 | Mediator | 用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立的改变对象间的交互 | 不直接引用 | |
| 行为 | 策略模式 | Strategy | 定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化 | 算法替换 | |
| 行为 | 模版方法模式 | Template | 定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤 | 子类按照父类的模板去实现 | |
| 行为 | 观察者模式 | Observer | 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 | 通知、自动更新 | |
| 行为 | 状态模式 | State | 允许一个对象在其内部状态改变时改变它的行为 | 状态变成类 | |
| 行为 | 访问者模式 | Visitor | 表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作。 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身。 定义对象结构的类很少改变,但经常需要在此结构上定义新的操作 | 数据和操作分离 | |
| 行为 | 解释器模式 | Interpreter | 给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子 | 解释器,虚拟机 |
#设计模式