全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

设计模式专题

专题说明

本专题系统讲解23种经典设计模式,设计模式是面向对象设计的最佳实践,分为创建型、结构型、行为型三大类,掌握设计模式是成为高级开发者的必经之路。

学习目标

  1. 理解设计模式的六大设计原则
  2. 掌握创建型模式:单例、工厂、建造者、原型
  3. 掌握结构型模式:适配器、装饰器、代理、外观
  4. 掌握行为型模式:责任链、命令、迭代器、观察者、状态、策略
  5. 理解各种模式的适用场景与优缺点
  6. 能够在实际项目中正确应用设计模式

学习内容

本专题涵盖三大类设计模式:

创建型模式(5种)

模式核心思想
单例模式确保类只有一个实例
工厂模式创建对象由子类决定
抽象工厂模式创建产品族
建造者模式分离构建与表示
原型模式通过克隆创建对象

结构型模式(7种)

模式核心思想
适配器模式接口转换适配
装饰器模式动态扩展功能
代理模式控制对象访问
外观模式简化复杂子系统
桥接模式分离抽象与实现
组合模式树形结构处理
享元模式共享细粒度对象

行为型模式(11种)

模式核心思想
责任链模式链式处理请求
命令模式封装请求为对象
迭代器模式顺序访问集合
观察者模式一对多依赖通知
状态模式状态改变行为
策略模式算法族可互换
模板方法模式定义算法骨架
备忘录模式保存恢复状态
中介者模式集中交互逻辑
解释器模式解释执行文法
访问者模式分离数据与操作

学习建议

  1. 理解设计原则:先理解开闭、单一职责等六大原则,模式是其实现
  2. 对比学习:工厂与抽象工厂、装饰器与代理、策略与状态等模式要对比理解
  3. 结合实际:Java IO用装饰器、Spring AOP用代理、集合用迭代器,结合框架学习
  4. 避免过度设计:模式是解决问题的工具,不要为了用模式而用模式

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
判断题

单例模式的核心目的是确保一个类在整个系统中只有一个实例,并提供一个全局访问点。

A

B

2
单选题

Java中实现线程安全的懒汉式单例模式时,为什么需要使用volatile关键字修饰实例变量?

A

防止反射破坏单例

B

防止指令重排序导致其他线程获取到未初始化完成的实例

C

确保实例不会被序列化

D

防止内存溢出

3
多选题

以下哪些是Java中常见的单例模式实现方式?

A

饿汉式

B

懒汉式双重检查锁

C

静态内部类

D

枚举

4
判断题

简单工厂模式将对象的创建逻辑封装在一个工厂类中,客户端无需知道具体产品类的名称。

A

B

5
单选题

工厂方法模式符合哪种设计原则?

A

单一职责原则

B

开闭原则

C

依赖倒置原则

D

以上都符合

6
判断题

建造者模式将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。

A

B

7
单选题

建造者模式与工厂模式的主要区别是什么?

A

建造者模式创建简单对象,工厂模式创建复杂对象

B

建造者模式关注分步构建,工厂模式关注一步创建

C

建造者模式不支持多产品

D

工厂模式需要客户端参与构建过程

8
判断题

原型模式通过复制现有对象(克隆)来创建新对象,而不是通过new关键字创建。

A

B

9
单选题

Java中浅拷贝(Shallow Clone)与深拷贝(Deep Clone)的区别是什么?

A

浅拷贝复制基本类型,深拷贝复制引用类型

B

浅拷贝复制对象引用,深拷贝复制引用指向的对象本身

C

浅拷贝不复制对象,深拷贝复制对象

D

浅拷贝更快,深拷贝更慢

10
判断题

适配器模式的作用是将一个类的接口转换成客户端期望的另一个接口,解决接口不兼容问题。

A

B

11
判断题

装饰器模式可以动态地给对象添加额外职责,比通过继承扩展功能更灵活。

A

B

12
单选题

Java IO包中,哪个类是InputStream的装饰器基类?

A

FileInputStream

B

ByteArrayInputStream

C

FilterInputStream

D

PipedInputStream

13
判断题

代理模式为其他对象提供一种代理以控制对这个对象的访问。

A

B

14
单选题

Java动态代理需要使用哪个类来创建代理对象?

A

Proxy

B

InvocationHandler

C

Method

D

Reflect

15
判断题

责任链模式将请求沿着处理链传递,直到有一个处理者能够处理该请求为止。

A

B

16
判断题

命令模式将请求封装为对象,从而可以使用不同的请求对客户端进行参数化。

A

B

17
判断题

迭代器模式提供一种方法顺序访问聚合对象中的元素,而不暴露该对象的内部表示。

A

B

18
判断题

观察者模式定义对象间的一种一对多依赖关系,当一个对象状态改变时,所有依赖于它的对象都得到通知并被自动更新。

A

B

19
判断题

状态模式允许一个对象在其内部状态改变时改变其行为,对象看起来好像改变了其类。

A

B

20
判断题

策略模式定义一系列算法,把它们封装起来,并使它们可以相互替换。

A

B

← 上一个专题 网络编程基础专题
下一个专题 → 面向对象基础专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库