全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
判断题:某文档编辑器采用状态模式管理排版行为,当前处于“编辑”状态。规则为:编辑状态收到“预览”事件切换到“预览”状态;预览状态收到“退出预览”事件回到“编辑”状态;未列出的事件不引起状态切换。在该状态下连续依次触发“预览”、“预览”、“退出预览”三个事件后,编辑器最终仍处于“预览”状态。
登录后查看答案
某公众号消息推送系统采用观察者模式设计:读者可关注公众号成为观察者,也可取消关注退出;公众号发布新文章时,会自动向所有当前关注它的读者推送通知。下列关于该设计的说法正确的是( ) A. 公众号发布文章时无需知道每位读者的具体类型,只需遍历通知所有关注者 B. 每位读者必须逐一询问公众号才能得知是否有新文章 C. 公众号必须针对每种不同类型的读者单独修改推送代码 D. 新读者关注后,公众号需要重新编译才能向其推送
某告警中心维护已登记接收者的集合。中心状态变化时,向集合中的接收者发送不携带状态值的通知;接收者收到通知后,可自行读取中心的最新状态。有人据此断言:这种设计不符合观察者模式,因为通知必须携带状态值。判断该断言是否正确。
某框架的模板方法定义为:final void process(){ begin(); if(needCheck()) stepA(); stepB(); end(); },其中 needCheck() 是钩子方法,begin()、stepB()、end() 均为父类具体方法。某子类重写 needCheck(),第一次调用返回 true,第二次返回 false。若该模板方法被连续执行两次,则两次执行中由该 process() 直接调用的方法(含父类钩子方法)总次数为____次。
某园林渲染引擎用享元模式绘制树木:每棵树的固定三维网格模型(占40KB)作为内部状态被所有树木共享;每次渲染时客户端传入该树的坐标与缩放比例(合计占8KB)作为外部状态。若不使用享元,每棵树单独保存一份网格模型和一份外部数据;使用享元后共享一份网格模型并各自保存外部数据。现有300棵树,则使用享元模式后相比不使用享元,内存占用共减少____KB。
某科研平台有两项设计:甲模块根据用户实时选择的调度规则对象安排计算任务,规则对象可整体替换;乙模块由抽象基类规定“读取任务清单→校验资源→提交任务”的固定顺序,具体平台子类实现其中的资源校验步骤。下列对两种设计的比较,哪项正确? A. 甲属于模板方法模式,乙属于策略模式;两者都通过子类重写步骤实现算法替换。 B. 甲属于策略模式,乙属于模板方法模式;前者以可替换的算法对象组织变化,后者以继承扩展固定算法骨架。 C. 甲、乙都属于策略模式;只要算法中存在可变化部分,就应将其封装为策略对象。 D. 甲、乙都属于模板方法模式;只要调用端能选择实现,就说明算法骨架由基类控制。
某图表库使用享元模式绘制数据点标记。标记的样式编号是内部状态,数据点的屏幕坐标是外部状态。享元工厂维护一个享元池,getFlyweight(styleId) 方法按样式编号管理共享对象:若池中已有该编号对应的对象则直接返回,否则创建一个新对象并登记到池中,且不淘汰。依次调用:getFlyweight(7) 创建并返回对象 F1;getFlyweight(3) 创建并返回对象 F2;再次调用 getFlyweight(7)。则第三次调用后,池中对象个数和返回对象分别是( ) A. 3 个,新创建的对象 B. 2 个,F1 C. 2 个,F2 D. 1 个,F1
某图像导出程序允许用户切换不同的压缩算法。下列哪项准确描述了该程序采用策略模式时的基本结构? A. 抽象策略声明算法接口,具体策略实现该接口,上下文持有策略引用并委托其执行 B. 抽象策略实现完整算法骨架,具体策略仅覆盖算法中的可变步骤 C. 上下文继承所有具体策略,并通过重写方法选择压缩算法 D. 客户端直接调用各具体策略的内部步骤,上下文负责统一封装算法实现
某演示文稿渲染系统采用享元模式管理字形对象,字形家族为内部状态,字在页面中的位置为外部状态。享元工厂以(字体家族,字号)二元组作为享元池的键:请求的键已存在时直接返回池中对应享元对象,不存在时创建新享元并登记入池,且不淘汰任何对象。池初始为空,请求序列依次为:(黑体,16)、(宋体,12)、(黑体,16)、(楷体,14)、(宋体,14)、(黑体,12)、(楷体,14)。则在全部请求处理完毕后,享元池中共登记了多少个享元对象,其中因命中池中已有对象而未新建的请求次数是多少? A. 登记5个,命中2次 B. 登记6个,命中1次 C. 登记5个,命中3次 D. 登记4个,命中3次
某离线数据校验工具有两项独立设计:甲模块将不同校验规则封装为对象,由调用端注入,运行中可更换整套规则;乙模块由父类固定“载入数据→执行校验→记录结果”的顺序,子类只重写校验步骤。按甲、乙的顺序,它们分别体现____与____。
某文本处理类的父类定义 execute(),依次调用读取、解析、输出三个步骤;子类可分别实现这些步骤,但不能改变调用顺序。按照模板方法模式,父类的 execute() 体现了____。
判断:在比较两种模式时,若需求是在运行时替换整套算法,应优先采用模板方法模式;若需求是由父类规定算法步骤顺序、再由子类实现可变步骤,则应采用策略模式。
某风控系统有两种可替换的评分算法,分别封装为独立对象,由调用者选择并可在运行时切换;另有一套固定处理流程,基类规定“收集特征→评分→生成报告”的顺序,子类只重写评分步骤。有人据此认为,前者体现模板方法模式,后者体现策略模式。判断该说法。
某网络游戏的背包界面用享元模式渲染装备图标:装备的品质图标为内部状态(键为(部位,品质)二元组),装备在格子中的位置与数量为外部状态。享元工厂维护一个不淘汰对象的享元池,getFlyweight(key) 命中则返回池中对象,未命中则创建并登记。初始池为空,界面刷新时依次请求以下 8 次:(武器,史诗)、(头盔,稀有)、(武器,史诗)、(护甲,普通)、(头盔,史诗)、(武器,普通)、(护甲,普通)、(武器,史诗)。刷新后,享元池中登记的享元对象共有 ____ 个,而 8 次请求中被共享复用(即命中池中已有对象)的次数共有 ____ 次。
某天文数据平台用享元对象绘制同款星体标记:标记的固定轮廓与线条样式保存在共享对象中;每次绘制时,客户端传入星体分类标签和屏幕坐标,且多个星体可能具有相同标签。判断:只要分类标签在多个星体间相同,它就应归为内部状态。
某虚拟展馆用享元对象表示同款展柜。展柜的固定外形参数在多个展柜实例间保持不变;每次展示时,客户端传入展柜的灯光亮度和摆放方位。按享元模式,固定外形参数属于____状态,灯光亮度和摆放方位属于____状态。
某分析系统定义接口 IReport,客户端持有的 ReportStub 与服务端 ReportService 均实现该接口。调用 ReportStub 的 analyze(data) 时,Stub 将参数编码后发送至远端服务,接收并解码返回结果;它不负责延迟创建本地对象,也不校验用户权限。该 Stub 属于哪种代理? A. 虚拟代理 B. 保护代理 C. 远程代理 D. 智能引用代理
判断:某系统中,类 P 实现了与远程服务对象相同的接口,客户端通过 P 发起调用,P 在转发请求前先检查调用者权限,权限不足则拒绝访问;即使远程服务尚未创建,P 也可先存在并延迟创建它。可见 P 的核心意图是简化客户端对多个子系统的使用,因此 P 属于外观模式。
某绘图应用采用抽象工厂模式。抽象工厂 ShapeFactory 声明了 createShape() 与 createFill() 两个方法。系统中现有三个具体工厂:CanvasFactory、SvgFactory 和 PdfFactory,分别创建对应平台下的形状与填充对象。客户端只依赖抽象工厂和抽象产品接口。若现在需要新增一种产品类型,即在抽象工厂中增加 createStroke() 方法,并要求原有的三个具体工厂都能创建描边对象,则至少需要修改的已有具体工厂类的个数是 ___。
某订单金额计算组件 calculate() 返回 500。现有两个装饰器:折扣装饰器 D 将所包装对象的返回值乘以 0.8;满减装饰器 R 将所包装对象的返回值减去 50。若将 calculate 对象用这两个装饰器各包装一次,最终 calculate() 返回 350,则最外层的装饰器是 ___(填 D 或 R)。