软件设计师 · 高频练习

建造者模式为什么适合分步骤创建复杂对象?

中级 单选题 第 700 题 中等 软件设计师建造者模式设计模式创建型模式复杂对象
题目

某报表系统生成一份复杂报告时,需要按固定流程设置标题、数据源、图表、页眉页脚和导出格式,但不同客户的具体配置和展示细节不同。设计人员希望把构建过程和最终表示分离,较适合采用的设计模式是()。

A 建造者模式
B 观察者模式
C 责任链模式
D 享元模式
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

建造者模式用于将复杂对象的构建过程与表示分离,使同样的构建过程可以创建不同表示。题干中复杂报告需要按步骤设置多个组成部分,不同客户又有不同表示细节,符合建造者模式的典型场景。

选项分析

A

正确。复杂对象分步骤创建,并分离构建过程和表示,属于建造者模式。

B

错误。观察者模式关注对象状态变化后通知多个依赖对象。

C

错误。责任链模式关注请求沿处理链传递。

D

错误。享元模式关注大量细粒度对象共享,减少内存开销。

本题为什么容易错

这题容易和工厂方法、抽象工厂混。工厂方法强调由子类决定创建哪一种产品;抽象工厂强调创建一组相关产品;建造者强调一个复杂对象的构建步骤和不同表示。题干如果反复出现步骤、部件、装配,就要往建造者想。

先看结论

简短答案

建造者模式为什么适合分步骤创建复杂对象,正确答案是 A(建造者模式)。建造者模式用于将复杂对象的构建过程与表示分离,使同样的构建过程可以创建不同表示。题干中复杂报告需要按步骤设置多个组成部分,不同客户又有不同表示细节,符合建造者模式的典型场景。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
建造者模式 本题正确答案 正确。复杂对象分步骤创建,并分离构建过程和表示,属于建造者模式。 看到题干核心场景时优先联想到它
观察者模式 本题干扰项 错误。观察者模式关注对象状态变化后通知多个依赖对象。 看到该词不要急着选,先判断是否真正解决题干问题
责任链模式 本题干扰项 错误。责任链模式关注请求沿处理链传递。 看到该词不要急着选,先判断是否真正解决题干问题
享元模式 本题干扰项 错误。享元模式关注大量细粒度对象共享,减少内存开销。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 观察者模式:错误。观察者模式关注对象状态变化后通知多个依赖对象。
  • 责任链模式:错误。责任链模式关注请求沿处理链传递。
  • 享元模式:错误。享元模式关注大量细粒度对象共享,减少内存开销。
复习

知识点详解

建造者模式适合对象创建过程比较复杂、组成部分较多、构建顺序相对清晰的场景。它把“怎么一步步构建”和“最终长什么样”分开,客户端不必关心内部装配细节。和抽象工厂相比,建造者更关注一个复杂对象的构建过程;抽象工厂更关注一组相关产品对象的创建。

备考速记

速记:工厂问造哪类,建造者问怎么一步步装出来。

复杂对象在复杂对象场景中的作用

复杂对象在本题中的核心价值,是解决“某报表系统生成一份复杂报告时,需要按固定流程设置标题、数据源、图表、页眉页脚和导出格式,但不同客户的具体配置和展示细节不同。设计人员希望把构建过程和最终表示分离,较适合采用的设计模式是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出复杂对象场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查复杂对象的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把复杂对象和观察者模式、责任链模式、享元模式放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
复杂对象在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把复杂对象放到复杂对象场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这题先看对象是不是复杂。报告不是一个简单 new 出来的对象,它有标题、数据源、图表、页眉页脚、导出格式等多个部分,而且构建顺序相对稳定。老师讲建造者模式时常说:流程像装配线,具体成品可以不同。题干正是这个意思。

考点定位

建造者模式的题眼是复杂对象、分步骤构建、构建过程和表示分离。它不是简单创建一个产品,也不是一组产品族。

易错提醒

  • 把建造者模式理解成普通工厂,只看到了创建对象。
  • 复杂对象构建参数过多,直接用长构造函数,导致调用方难以维护。
  • 没有把构建步骤和最终表示分开,新增报告样式时到处修改代码。

备考提示

  • 创建型模式可以按目标区分:单例看唯一实例,工厂方法看创建哪种产品,抽象工厂看产品族,建造者看复杂对象步骤。
  • 看到报表、套餐、复杂配置对象、分步骤装配,优先检查是否在考建造者模式。
  • 设计模式题不要只背类图,先抓题干中的变化点和创建复杂度。

你可能还想了解

  • 建造者模式为什么适合分步骤创建复杂对象?
  • 复杂对象是什么?
  • 复杂对象在软件设计师考试中怎么考?
  • 软件设计师复杂对象题怎么理解?
  • 建造者模式适合什么场景怎么考?
  • 建造者模式和工厂模式区别怎么考?

本文小结

本题核心考点是复杂对象在复杂对象场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(建造者模式)。