作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。
热门文章推荐:
- (1)《为什么很多人工作 3 年 却只有 1 年经验?》
- (2)《一文掌握大模型提示词技巧:从战略到战术巧》
- (3)《AI 时代,程序员的出路在何方?》
- (4)《如何写出高质量的文章:从战略到战术》
- (5)《我的技术学习方法论》
- (6)《我的性能方法论》
- (7)《AI 时代的学习方式: 和文档对话》
一、AI 解读
设计模式是在软件工程中常见的解决特定问题的模板或指南,它们被分为三大类:创建型、结构型、和行为型。下面将简单介绍这三类设计模式,并给出一些常见的例子。
创建型设计模式
创建型设计模式主要关注对象的创建过程,使系统对对象的创建过程解耦,增加系统的灵活性和可维护性。
设计模式 | 描述 |
---|---|
单例模式 | 确保一个类只有一个实例,并提供一个全局访问点。 |
建造者模式 | 分步骤构建一个复杂的对象,允许用户只通过指定复杂对象的类型和内容就可以构建它们。 |
原型模式 | 通过复制现有的实例来创建新的实例,而不是通过新建类。 |
工厂方法模式 | 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 |
抽象工厂模式 | 提供一个接口,用于创建相关的对象家族,而不需要明确指定具体类。 |
结构型设计模式
结构型设计模式关注类和对象的组合,用于形成更大的结构,以简化设计并提高代码的复用性。
设计模式 | 描述 |
---|---|
适配器模式 | 允许将一个类的接口转换成客户期望的另一个接口。 |
桥接模式 | 分离抽象部分和实现部分,使它们可以独立地变化。 |
组合模式 | 允许将对象组合成树形结构,以表示“部分-整体”的层次结构。 |
装饰器模式 | 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。 |
外观模式 | 提供了一个统一的接口,用来访问子系统中的一群接口。 |
享元模式 | 通过共享技术来有效地支持大量细粒度的对象。 |
代理模式 | 为其他对象提供一个代理,以控制对这个对象的访问。 |
行为型设计模式
行为型设计模式关注对象之间的通信,为对象之间的通信提供更灵活的解决方案。
设计模式 | 描述 |
---|---|
观察者模式 | 当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。 |
模板方法模式 | 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中实现。 |
命令模式 | 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。 |
状态模式 | 允许一个对象在其内部状态改变时改变它的行为。 |
策略模式 | 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 |
职责链模式 | 为请求创建了一个接收者对象的链。 |
访问者模式 | 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身。 |
迭代器模式 | 提供一种方法顺序访问一个集合对象中的各个元素,而又不暴露其内部的表示。 |
中介者模式 | 用一个中介对象来封装一系列的对象交互。 |
备忘录模式 | 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 |
二、AI 出题
设计模式分类选择题
题目1
单例模式属于哪一种设计模式分类?
A. 创建型设计模式
B. 结构型设计模式
C. 行为型设计模式
D. 功能型设计模式
题目2
装饰器模式的主要目的是什么?
A. 创建一系列相关或依赖对象
B. 动态地给一个对象添加一些额外的职责
C. 确保一个类只有一个实例
D. 在不改变接口的前提下,改变对象的内部状态
题目3
观察者模式主要用于以下哪种场景?
A. 当一个对象的改变需要同时改变其他对象,且不知道具体有多少对象需要改变时
B. 当需要为一系列相互依赖的对象提供一个共享的接口时
C. 当需要多个对象共享一个状态时
D. 当对象之间的关系是可变的
题目4
抽象工厂模式与工厂方法模式不同之处在于?
A. 抽象工厂模式可以创建一系列相关的对象,而工厂方法模式只创建一种对象
B. 工厂方法模式可以创建一系列相关的对象,而抽象工厂模式只创建一种对象
C. 抽象工厂模式不需要客户端代码指定产品的具体类
D. 工厂方法模式提供一个创建对象的接口,抽象工厂模式没有这个接口
题目5
以下哪种模式允许对象在内部状态改变时改变它的行为?
A. 状态模式
B. 策略模式
C. 观察者模式
D. 命令模式
题目6
享元模式的主要目的是什么?
A. 确保一个类只有一个实例
B. 提供一个创建对象的接口,允许子类决定实例化哪个类
C. 通过共享技术支持大量细粒度的对象
D. 将一个请求封装成一个对象,以使你可用不同的请求对客户进行参数化
答案与解析
题目1: 答案 A
单例模式确保一个类只有一个实例,并提供一个全局访问点,属于创建型设计模式。
题目2: 答案 B
装饰器模式主要目的是动态地给一个对象添加一些额外的职责,以增加对象的功能。
题目3: 答案 A
观察者模式用于当一个对象的改变需要同时改变其他对象,且不知道具体有多少对象需要改变的场景。
题目4: 答案 A
抽象工厂模式与工厂方法模式的不同之处在于,抽象工厂模式可以创建一系列相关的对象,而工厂方法模式只创建一种对象。
题目5: 答案 A
状态模式允许对象在其内部状态改变时改变它的行为,这与策略模式不同,后者是将算法的使用和算法的实现分离开来。
题目6: 答案 C
享元模式的主要目的是通过共享技术支持大量细粒度的对象,以减少内存占用。
三、真题
四、拓展资料
菜鸟教程 - 设计模式