23种设计模式,你学废了嘛?

发布网友 发布时间: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.中介模式

中介模式通过引入中介这个中间层,将一组对象之间的交互关系从多对多(网状关系)转换为一对多(星状关系)。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com