1、顺口溜
创建型,工厂多,
单例建对象,抽象工厂做。
建造者分步做,原型克隆最不愁。
结构型,适配器,
桥接组合都不错,
装饰外观飞享元,代理再添一把火。
行为型,责任链,
命令解释迭代先。
中介备忘观察行,
状态策略模板见。
访问者真独特,
并发型,线程池,
读写锁,生产消。
逐行解析:
第一行:创建型,工厂多,
- 工厂模式 (Factory Method):创建型模式中的一个代表,工厂模式提供一个接口,用于创建对象,但由子类决定要实例化的具体类。这里提到的“工厂多”是指创建型模式中有几种常见的工厂类模式(例如工厂方法模式和抽象工厂模式)。
第二行:单例建对象,抽象工厂做。
- 单例模式 (Singleton):单例模式确保类只有一个实例,并提供全局访问点。用于限制某个类的实例化次数,通常用于日志类、数据库连接池等需要全局唯一的场景。
- 抽象工厂模式 (Abstract Factory):创建相关或依赖的对象,而无需指定具体类。常用于创建一系列相关产品的情况。例如,如果你有一组相互依赖的对象(如操作系统相关的按钮、窗口等),抽象工厂可以提供不同的工厂来创建这些相关对象。
第三行:建造者分步做,原型克隆最不愁。
- 建造者模式 (Builder):建造者模式允许通过一步步的构造过程,创建一个复杂的对象。通常是通过提供多个参数来构造对象,而不暴露对象的具体构建过程。
- 原型模式 (Prototype):原型模式通过克隆现有对象来创建新对象。通过复制原始对象,可以轻松地生成新的对象,而不需要重新构造。适用于复杂对象或对象创建开销较大的场景。
第四行:结构型,适配器,
- 适配器模式 (Adapter):结构型模式中的一个代表,适配器模式用于将一个类的接口转换成客户端所期待的另一个接口。简单来说,适配器“包装”一个类的功能,使其能够与其他不兼容的类一起工作。例如,你的系统可能使用 A 类的接口,而第三方库提供的是 B 类接口,适配器模式就可以帮助你将 B 类接口适配成 A 类接口,避免直接修改第三方代码。
第五行:桥接组合都不错,
- 桥接模式 (Bridge):结构型模式中的一个模式,桥接模式用于将抽象和实现分离,使得两者可以独立变化。举个例子,如果你有多个操作系统和多个应用程序,桥接模式可以将操作系统和应用程序分开实现,从而使得操作系统和应用程序可以独立变化。
- 组合模式 (Composite):组合模式用于处理树形结构的对象,将对象组合成树形结构,使得客户端能够以统一的方式对待单个对象和对象集合。比如文件夹和文件的管理,文件夹和文件可以看作是树形结构,文件夹是一个“组合”,而文件是“叶子”。
第六行:装饰外观飞享元,代理再添一把火。
- 装饰器模式 (Decorator):结构型模式,装饰器模式通过动态地为对象添加额外的功能,不需要修改对象的代码。这是通过创建装饰器类来实现的,装饰器类会包含与原类相同的接口,并在原类的基础上添加新功能。
- 外观模式 (Facade):外观模式提供一个统一的接口来简化系统的使用,让客户端与复杂的子系统交互时,只需通过一个简单的接口即可。外观模式隐藏了复杂的子系统的内部实现。
- 享元模式 (Flyweight):享元模式通过共享相同的对象来减少内存使用,特别适用于大量相似对象的场景。享元模式可以共享内存占用相同的对象,而不必为每个对象创建新的实例。
- 代理模式 (Proxy):代理模式通过为对象提供代理来控制对其的访问,代理类通常会拦截客户端对目标对象的请求,可以用来添加额外的功能或做权限控制等。例如,虚拟代理用于延迟加载对象,远程代理用于处理网络通信等。
第七行:行为型,责任链,
- 责任链模式 (Chain of Responsibility):行为型模式之一,责任链模式通过将请求沿着一条链传递下去,每个对象都有机会处理请求。链中的每个处理对象都可以选择是否处理请求,或者将请求传递给下一个处理对象。常用于事件处理、日志系统等。
第八行:命令解释迭代先。
- 命令模式 (Command):行为型模式之一,命令模式将请求封装成对象,从而能够传递、记录、撤销请求。命令对象通常包含一个执行命令的方法,允许用户将命令排队、撤销或重做。
- 解释器模式 (Interpreter):行为型模式之一,解释器模式用于定义一个语言的文法,并提供一个解释器来解释给定的语句。通常用于构建表达式解析器等场景。
- 迭代器模式 (Iterator):行为型模式之一,迭代器模式用于提供一种访问集合元素的方法,而不暴露集合的内部结构。它允许你使用统一的方式遍历不同类型的集合。
第九行:中介备忘观察行,
- 中介者模式 (Mediator):行为型模式之一,中介者模式通过一个中介对象来协调不同对象之间的通信,减少对象之间的耦合。在复杂的系统中,可以使用中介者模式来简化不同模块之间的交互。
- 备忘录模式 (Memento):行为型模式之一,备忘录模式用于在不暴露对象内部结构的情况下保存和恢复对象的状态。常用于实现撤销操作或状态回滚。
- 观察者模式 (Observer):行为型模式之一,观察者模式用于定义一种一对多的依赖关系,当一个对象的状态改变时,所有依赖的对象都会收到通知。典型的例子是 GUI 编程中的事件监听。
第十行:状态策略模板见。
- 状态模式 (State):行为型模式之一,状态模式允许对象在其内部状态改变时改变其行为。通常通过将状态行为封装成状态类,使得不同状态下的行为不需要修改对象的代码。
- 策略模式 (Strategy):行为型模式之一,策略模式定义一系列算法,并将每一个算法封装起来,使得它们可以互换。策略模式常用于需要根据不同情况选择不同算法的场景,比如排序、支付方式选择等。
- 模板方法模式 (Template Method):行为型模式之一,模板方法模式定义一个算法的骨架,允许子类实现某些步骤。模板方法模式通常用于步骤固定、部分可变的算法。
第十一行:访问者真独特,
- 访问者模式 (Visitor):行为型模式之一,访问者模式用于将操作与对象结构分离,使得可以在不修改对象结构的前提下,新增操作。访问者模式通常用于需要对一组对象执行不同操作的场景,比如编译器中的语法树遍历。
第十二行:并发型,线程池,
- 线程池模式 (Thread Pool):并发型模式之一,线程池模式通过管理一组预先创建的线程,避免频繁创建和销毁线程的开销。线程池可以有效地提高多线程程序的性能,减少资源消耗。
第十三行:读写锁,生产消,
- 读写锁模式 (Read-Write Lock):并发型模式之一,读写锁模式允许多个线程同时读共享资源,但写线程必须独占资源。读写锁模式通常用于资源共享较多、写操作较少的场景。
- 生产者消费者模式 (Producer-Consumer):并发型模式之一,生产者消费者模式通过使用缓冲区来协调生产者线程和消费者线程,确保它们之间的同步和协作。生产者负责生成数据,消费者负责处理数据。