全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某文档系统采用抽象工厂模式:抽象主题工厂 ThemeFactory 声明 createButton() 与 createMenu() 两个方法;具体工厂 DarkFactory 创建“深色按钮”与“深色菜单”,LightFactory 创建“浅色按钮”与“浅色菜单”。客户端通过抽象接口使用工厂创建组件。若希望整套界面切换为深色风格,最合适的做法是( ) A. 分别修改按钮和菜单类,使其全部输出深色样式 B. 将客户端持有的具体工厂替换为 DarkFactory,组件自然成套变为深色 C. 在客户端用条件判断逐一选择深色按钮或深色菜单 D. 删除 LightFactory,把所有创建语句改为直接 new 深色组件
登录后查看答案
某团队开发数字展厅系统,需要生成可定制的展厅导览方案。每份方案都包含路线、讲解内容和媒体资源,构建步骤相近,但不同展厅的各部分配置差异较大。哪种需求最适合应用建造者模式? A. 按不同展厅配置分步构建完整导览方案 B. 根据展厅编号查找已保存的导览方案 C. 对导览方案中的路线进行距离排序 D. 定时删除过期的导览方案
某物流计费系统中,价格计算的总体流程固定为:校验订单→计算基础运费→叠加附加费→输出账单。开发组既可以让抽象类固定该流程、由子类实现“计算基础运费”步骤,也可以将每种计费算法整体封装为独立对象、由上下文在运行时替换。下列哪项是对这两种实现方式(模板方法与策略模式)的准确对比? A. 模板方法通过继承复用并固定算法骨架,策略通过组合封装可整体替换的算法族 B. 两种模式都必须在运行时动态切换算法,否则无法工作 C. 模板方法要求客户端持有具体算法对象并负责选择,策略则完全由父类控制流程 D. 两种模式都会导致算法骨架在多个子类中重复出现
某订单折扣系统需要支持“会员折扣”“满减折扣”“节日折扣”三种计价方式,且每种方式内部的计价步骤(校验订单→计算折扣→生成凭证)顺序固定、仅“计算折扣”一步因方式而异。关于选用模式及二者的对比,下列说法唯一正确的是:A. 只能用模板方法模式,因为算法骨架固定,且策略模式无法处理部分步骤可变的情况 B. 只能用策略模式,因为算法族需整体封装可替换,模板方法模式要求所有步骤都固定不可变 C. 若整体替换算法用策略模式;若固定骨架、复用公共步骤而仅子步骤可变,用模板方法模式,二者对变化点的封装粒度不同 D. 两种模式本质相同,可任意互换,因为二者都是行为型模式且都封装了算法
某程序用策略模式封装多种可互换的排序算法,由客户端选择具体策略;另一程序用模板方法模式在父类中固定处理流程,并由子类实现若干步骤。下列哪项准确描述了两种模式的区别? A. 策略模式封装可替换的算法,模板方法模式定义算法骨架 B. 策略模式由父类固定算法骨架,模板方法模式由客户端选择算法 C. 两种模式都必须由客户端继承父类才能改变算法 D. 两种模式的核心都是将算法步骤封装为互不相关的对象
地图编辑器中,许多标记具有相同的图案与固定颜色,但位置和缩放比例各不相同。为减少重复对象占用的内存,哪种设计符合享元模式的核心思想? A. 每个标记独立保存图案、颜色、位置和缩放比例 B. 按图案与颜色共享标记对象,位置和缩放比例由每次绘制时传入 C. 按位置和缩放比例共享标记对象,图案与颜色由每次绘制时传入 D. 将所有标记的数据合并为一个对象,并为每个位置复制一份该对象
某文档系统用享元对象表示字符:字形轮廓在多个文档中相同,字符的字号和页面坐标随文档而异。按照享元模式,以下哪项分类正确? A. 字形轮廓是内部状态,字号和页面坐标是外部状态 B. 字形轮廓和字号都是内部状态,页面坐标是外部状态 C. 字形轮廓是外部状态,字号和页面坐标是内部状态 D. 字形轮廓和页面坐标都是外部状态,字号是内部状态
某消息推送系统原有 3 种消息类型(普通、加急、加密)和 4 种发送渠道(短信、邮件、微信、钉钉)。若采用传统多层继承,每个消息类型与发送渠道的组合都对应一个具体类。现改用桥接模式:抽象层为消息,实现层为发送器,抽象消息持有发送器接口引用。当系统需要同时新增 1 种消息类型和 1 种发送渠道时,与传统多层继承相比,采用桥接模式最少可少新增几个类? A. 2 B. 4 C. 6 D. 8
某资源目录按组合模式组织:根节点“资源库”包含“专题甲”和“专题乙”;“专题甲”包含“条目组丙”和“条目丁”;“条目组丙”包含“条目戊”。其余节点均无子节点。若把能够包含子节点的节点归为组合节点,以下哪项列出了全部组合节点? A. 资源库、专题甲、条目组丙 B. 资源库、专题甲 C. 专题甲、条目组丙 D. 资源库、专题甲、条目组丙、条目丁
某报表系统包含三个子系统类:DataSource(取数)、Formatter(格式化)、Exporter(导出)。现引入外观类 ReportFacade,其 generate() 方法内部依次调用这三个类。关于该外观模式中门面角色(ReportFacade)的职责,下列说法正确的是:A. 它必须继承三个子系统类,才能调用其方法;B. 它为子系统的高层接口提供统一入口,客户端只需与它交互,而无需了解子系统内部细节;C. 它负责封装各子系统的全部内部数据,禁止子系统之间任何直接交互;D. 它必须让客户端能够绕过门面直接调用 Formatter,否则模式不成立。
某文档归档系统中,客户端只调用一个“完成归档”接口;该接口统一封装并协调格式检查、内容存储和索引登记三个子系统的调用。承担这一统一接口职责的对象是哪一个? A. 客户端对象 B. 格式检查子系统对象 C. 归档门面对象 D. 索引登记子系统对象
在桥接模式的标准结构中,抽象部分通过哪种方式与实现部分建立关联,从而避免抽象层次与实现层次的紧耦合? A. 抽象类内部直接实现接口方法 B. 通过组合(聚合)关系持有实现层接口的引用 C. 通过多重继承同时继承抽象与实现 D. 通过全局变量共享实现对象
某报表系统需生成 PDF 报告:先创建空白文档,再依次填入标题、表格、图表三部分,最后加盖页脚并输出。现需求变化:既要支持 PDF 输出,又要支持 HTML 输出,且各部分的具体生成方式不同但步骤顺序固定。若分别用工厂模式和建造者模式设计,下列说法正确的是: A. 工厂模式更合适,因为它一次调用即可返回完整报告对象,无需关心步骤 B. 建造者模式更合适,因为它将复杂对象的构建过程分解为多个步骤并逐步组装,相同步骤顺序可复用而具体实现可切换 C. 两者完全等价,工厂模式同样能把「标题、表格、图表」的生成步骤逐步暴露给客户端控制 D. 建造者模式更合适,因为它强调产品类的继承体系,PDF 报告和 HTML 报告应继承同一抽象报告类
某报表系统中 ReportConfig 类需保证全局唯一实例。开发小组比较两种实现:方式甲在类加载时即调用私有构造函数创建静态实例;方式乙在 getInstance() 中判断实例为空时才创建。上线后观察到:即使进程从不获取该实例,方式甲的构造逻辑也在启动阶段执行了一次。关于甲、乙两种实现及上述现象,下列判断正确的是:A. 甲是懒汉式,乙是饿汉式,现象说明乙被提前加载 B. 甲是饿汉式,乙是懒汉式,现象与懒汉式特征不符,符合饿汉式随类加载即初始化的特点 C. 甲、乙都是饿汉式,因为都只创建了一个实例 D. 甲是饿汉式,乙是懒汉式,现象说明getInstance()一定已被调用过
某报表类 Report 实现了 Cloneable,其字段有:标题(String)、创建次数(int)、数据列表(List<String>)。其 clone() 方法写为 super.clone() 的浅拷贝。现有原型 r1,数据列表内容为 ["A"]。执行:Report r2 = r1.clone() 后,先向 r2 的数据列表中添加元素 "B",再调用 r2 各字段读取。下列说法正确的是:A. r1 的数据列表仍为 ["A"],创建次数与 r2 互不影响 B. r1 的数据列表变为 ["A","B"],因浅拷贝共享同一列表引用 C. r1 的数据列表变为 ["A","B"],且标题字段也被 r2 修改 D. r1 的数据列表仍为 ["A"],因 String 不可变所以列表也独立
某在线票务系统采用体系结构权衡分析方法(ATAM)进行架构评估。评估组记录了四个架构决策及其质量属性影响: D1:引入消息队列异步出票,提升吞吐量,但延长最终一致性时间。 D2:增加只读缓存,仅缩短查询响应时间,未改变其他质量属性。 D3:采用无状态令牌认证,提升可伸缩性,但增加令牌撤销的安全复杂度。 D4:配置数据库主从复制,提高可用性,但故障切换时可能读取旧数据。 评估组约定:若某决策显著影响两个或两个以上质量属性,则计为权衡点。根据上述记录,这四项决策中权衡点的个数是( )。 A. 1个 B. 2个 C. 3个 D. 4个
某物流管理系统中,TransportManager 类包含以下方法:calculateRoute() 计算配送路线、generateInvoice() 生成运费发票、sendSmsNotify() 向客户发送短信通知。随着需求变化,发票格式频繁调整,而路线算法保持稳定,导致该类被反复修改。若用单一职责原则分析,该设计最主要的问题及正确的重构方向是什么? A. 问题在于方法命名不一致,只需统一命名规范即可 B. 问题在于类承担了多个可能独立变化的职责,应拆分为路线计算、发票生成、短信通知等职责单一的类 C. 问题在于方法数量过多,应将所有方法合并为一个 process() 方法 D. 问题在于缺少继承结构,应让三个方法成为抽象方法由子类实现
某跨平台报表系统采用抽象工厂模式:抽象工厂 ReportFactory 声明 createHeader() 与 createChart() 两个方法;具体工厂 PdfFactory 与 ExcelFactory 分别创建 PDF 族和 Excel 族产品,客户端持有 ReportFactory 类型引用并调用其方法生成报表。现需新增支持 Word 格式的报表。下列说法正确的是: A. 需修改 ReportFactory 接口和两个已有工厂才能支持 Word B. 新增 WordFactory 实现 ReportFactory 即可,客户端仅在注入工厂处做一处改动,符合开闭原则 C. 应删除 PdfFactory 与 ExcelFactory,改用条件判断创建 Word 产品 D. Word 报表的表头与图表应由两个不同工厂分别创建再组合
某日志系统中,客户端代码只调用 LogFactory.getLogger("file") 获取日志记录器,从未直接 new 具体日志类。现要求新增一种数据库日志 DatabaseLogger,并保证客户端代码一行不改。关于该简单工厂模式的改造,下列说法唯一正确的是:A. 只需在工厂类的创建方法中增加对 "db" 参数的分支判断,返回 DatabaseLogger 实例即可,客户端无需修改 B. 必须修改客户端代码,把 getLogger 换成新的方法名 C. 必须删除原有文件日志分支,避免与新增分支冲突 D. 简单工厂要求每个产品各建一个独立工厂类,否则违反开闭原则
某团队为“实验室设备预约系统”记录了一轮体系结构设计活动,顺序如下:①确定本轮设计目标并选定待分解元素;②将选定的体系结构模式实例化到该元素上,分配职责并定义接口;③识别与该元素相关的质量属性场景与约束,形成体系结构驱动因素;④根据驱动因素选择候选体系结构模式或战术;⑤评估当前设计是否满足驱动因素,决定是否调整并进入下一轮。若只允许移动其中一项活动,使其符合体系结构设计基本过程,应如何调整? A. 将②移到④之后 B. 将③移到⑤之后 C. 将④移到①之前 D. 将⑤移到②之前