全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某订单系统的多个处理方法中重复出现同一段折扣计算代码。重构时,先将重复代码提取为方法;随后发现折扣算法会随订单类型变化,且新增类型时总要修改同一处条件分支。若希望把各折扣算法封装为可独立替换的对象,并由订单处理对象委托执行,应引入____模式。
登录后查看答案
在智能温室控制系统中,若控制器按预设顺序传递灌溉请求,由某个处理者决定是否处理或继续传递,属于____;若传感器、阀门等对象通过一个协调对象交互,属于____。
某智能家居系统中,用户点击“关门”按钮时会生成一个包含目标设备、操作名和执行时间的请求对象并交给调度器执行,可撤销、可排队;而门禁电机对象调用 close() 方法时,其具体动作取决于自身的内部状态变量 state:空闲时执行关门并置 state 为“关闭”,关闭时则不做任何处理。若用模式术语概括:前者体现的是____模式“将请求封装为对象、从而支持排队与撤销”的思想;后者体现的是____模式“行为随内部状态改变而改变”的思想。
命令模式将请求封装为____;状态模式使对象行为随其____变化。
集合按顺序保存:槐、漆、榆、柘、枫、楸、檀。迭代器从首元素开始,hasNext() 只检查是否还有元素而不改变状态,next() 返回当前元素并前进一位。执行过程中,在每次 next() 前都调用两次 hasNext();当 next() 首次返回“楸”时,next() 已成功调用 ____ 次。
在 Java 内置观察者支持中,java.util.Observable 的子类在通知观察者之前必须先调用____方法将 changed 标志置为 true,否则随后调用的 notifyObservers() 不会触发观察者的 update 方法;观察者类需要实现____接口,并提供相应的更新方法以接收通知。
某公司请假审批系统中,若员工提交的申请依次经过组长、经理、总监逐级判断处理或传递,且任一节点可终止流程,则该设计最宜采用____模式;而机场调度系统中,若每架飞机的降落请求都需要与其他飞机协调占用跑道,为避免飞机之间直接通信,引入一个塔台统一协调各方交互,则该设计最宜采用____模式。前者中各处理对象持有对____的引用并可在处理后继续传递请求,而后者强调将对象间多对多的交互集中封装于一个协调对象,以降低对象间的耦合度。请依次填出三个空位的内容(后一空填'下一个处理对象'或'中介者对象')。
某协作系统中,模块甲、乙、丙、丁之间的业务交互全部由对象枢纽统一接收和协调,模块之间不直接发送消息。现需调整甲与丙的交互规则,且不改变各模块的职责。应优先修改的对象是____。
在在线审批系统中,若多个处理对象按既定顺序逐个接收请求,当前对象可处理请求或将请求传给下一对象,这属于____模式;若多个对象通过一个协调对象间接交互,以避免彼此直接依赖,这属于____模式。
某系统构建“订单”对象。类 OrderBuilder 声明 buildItems()、buildPayment()、buildShipping() 等接口;类 NormalOrderBuilder 实现这些接口;类 Order 是最终产品。当前客户端 OrderClient 中直接按 items→payment→shipping 的顺序调用 NormalOrderBuilder 的构建方法,再获取 Order。为遵循建造者模式并隔离客户端与具体构建过程,应将这种“按固定次序调用构建步骤”的职责从客户端移出,交给一个专门的类。该专门类在建造者模式中对应的角色是 ___。
设备控制系统将“启动设备”请求封装为一个命令对象,并交由调用者执行。命令对象中应封装接收者、请求及执行请求的方法;其中,接收者是设备控制器,请求是启动操作。请填入该命令对象的核心方法名:____。
集合按顺序保存元素:藻、苔、蕨、杉、竹、桦。分别为该集合创建迭代器 i₁、i₂,二者均从首元素开始;next() 返回当前元素并前进一位,hasNext() 只检查是否还有元素、不改变迭代位置。依次执行:i₁.hasNext()、i₁.hasNext()、i₁.next()、i₂.next()、i₁.next()、i₂.hasNext()、i₂.next()、i₁.next()。i₁第三次调用 next() 返回的元素与 i₂第二次调用 next() 返回的元素依次为____。
某天气服务对象保存一组观察者。气温更新时,服务对象主动向所有已注册的观察者发送通知;观察者收到通知后读取最新气温。观察者通过注册加入,通过取消注册退出。该设计体现的模式是____。
某批处理框架的模板方法为:final void run(){ open(); load(); if (ready()) transform(); save(); close(); }。子类不能重写 run(),但重写其余方法:open、load、ready、save、close 分别记录 O、L、R、S、C;ready() 返回 false,transform() 记录 T。调用 run() 后,日志为 ____。
某文本处理器将“按词频排序”“按字母排序”封装为两个类,二者实现同一算法接口;处理器持有该接口的引用,并把排序请求委托给当前选定的实现。处理器在策略模式中承担的角色是____。
策略模式将可替换算法封装为独立策略对象,模板方法模式在父类定义算法骨架并由子类实现变化步骤。二者实现算法变化的主要机制分别是____与____。
某地图渲染系统的享元工厂以完整的(地貌类别,色彩方案)二元组作为键,池中已有键(丘陵,晨光)、(河谷,暮色)和(湿地,晨光)。工厂不淘汰池中对象;请求序列依次为(丘陵,晨光)、(海岸,暮色)、(河谷,暮色)、(海岸,晨光)、(湿地,晨光)。处理该序列时,工厂新建的享元对象数为____个。
某地图编辑器将同款地铁站符号制成可共享对象:符号的固定轮廓和固定线条样式在所有地图中完全相同;每次绘制时,客户端根据具体地图提供该符号的中心坐标、旋转角度和缩放比例。填空:该对象的内部状态是____,外部状态是____。
某数据校验组件原有 validate() 方法返回数值 7,现需在不修改组件类的前提下,于运行时动态叠加两个装饰器:D₁ 将被包装对象的返回值加 5,D₂ 将被包装对象的返回值乘 3。先用 D₁ 包装组件,再用 D₂ 包装所得对象,调用最终对象的 validate(),返回值为____。
比较两种模式的主要目的:装饰器模式侧重于____,组合模式侧重于____。