发布网友 发布时间:2025-01-02 16:04
共1个回答
热心网友 时间:5分钟前
作者王争,前 Google 工程师,本文摘自《设计模式之美》专栏
23种经典设计模式分为3种类型,包括创建型、结构型和行为型。
本文将把这3种类型分为3个小模块,逐一介绍每种设计模式的原理、实现、设计意图和应用场景。
通过阅读,如果你对每种模式都有印象,说明你学得不错;如果在脑子里能形成知识架构,闭上眼睛都能回忆起来,说明你学得很好;如果能有自己的理解,并在项目开发中运用,那说明你已经掌握了精髓。
一、创建型设计模式
创建型设计模式主要解决对象的创建问题,包括单例模式、工厂模式、建造者模式和原型模式。
1.单例模式
单例模式用于创建全局唯一的对象,一个类只允许创建一个对象,这个类就是单例类。
尽管单例很常用,但也有人认为它是一种反模式,不推荐使用。
2.工厂模式
工厂模式用来创建不同但相关的对象,由给定的参数决定创建哪种类型的对象。
当创建逻辑复杂时,使用工厂模式封装对象的创建过程。
3.建造者模式
建造者模式用于创建复杂对象,可以通过设置不同的参数创建不同的对象。
4.原型模式
原型模式利用已有对象复制的方式创建新对象,节省创建时间。
二、结构型设计模式
结构型模式主要解决类或对象组合的经典结构,包括代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式。
1.代理模式
代理模式为原始类定义一个代理类,主要目的是控制访问。
静态代理需要为每个类创建一个代理类,增加了维护成本。
2.桥接模式
桥接模式将抽象和实现解耦,让它们能开发。
3.装饰器模式
装饰器模式通过组合来替代继承,给原始类添加增强功能。
4.适配器模式
适配器模式将不兼容的接口转换为可兼容的接口,让原本不能一起工作的类可以一起工作。
5.门面模式
门面模式通过封装细粒度接口,提供组合接口,提高接口的易用性。
6.组合模式
组合模式将一组对象组织成树形结构,将单个对象和组合对象都看作树中的节点。
7.享元模式
享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。
三、行为型设计模式
行为型模式主要解决类或对象之间的交互问题,包括观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式。
1.观察者模式
观察者模式将观察者和被观察者代码解耦,应用场景广泛。
2.模板模式
模板方法模式在一个方法中定义一个算法骨架,将某些步骤推迟到子类中实现。
3.策略模式
策略模式定义一组算法类,将每个算法分别封装起来,让它们可以互相替换。
4.职责链模式
职责链模式中,多个处理器依次处理同一个请求。
5.迭代器模式
迭代器模式用来遍历集合对象,解耦容器代码和遍历代码。
6.状态模式
状态模式一般用来实现状态机,常用在游戏、工作流引擎等系统开发中。
7.访问者模式
访问者模式允许一个或多个操作应用到一组对象上,设计意图是解耦操作和对象本身。
8.备忘录模式
备忘录模式也叫快照模式,在对象之外保存对象的状态,以便之后恢复对象为先前的状态。
9.命令模式
命令模式将函数封装成对象,实现把函数像对象一样使用。
10.解释器模式
解释器模式为某个语言定义它的语法表示,并定义一个解释器用来处理这个语法。
11.中介模式
中介模式通过引入中介这个中间层,将一组对象之间的交互关系从多对多(网状关系)转换为一对多(星状关系)。