全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某监测平台统一通过“采集器”接口处理设备。方案甲允许运行时把限流、脱敏等处理器逐层包装到单个采集器外,包装后仍按该接口调用;方案乙允许区域节点包含多个区域节点或采集器,并让客户端统一处理单个采集器与区域。甲应采用____模式,乙应采用____模式。
登录后查看答案
某生态模拟器采用抽象工厂模式。抽象工厂 EcoFactory 声明 createHabitat() 与 createRule();潮汐工厂分别创建“盐沼栖地”和“涨落迁徙规则”,熔岩工厂分别创建“玄武岩栖地”和“耐热巡行规则”。客户端先令 f 指向潮汐工厂,并调用 habitat = f.createHabitat();随后将 f 改指向熔岩工厂,再调用 rule = f.createRule()。最终 habitat 与 rule 的名称依次为____。
某智慧医院预约挂号系统的一条质量属性场景为:"门诊高峰时段(环境),患者通过手机App(刺激源)提交取消预约请求(刺激),挂号服务应在 1 秒内返回取消结果,且 99.5% 的请求满足该时限。" 按质量属性场景六元组分析,其中"门诊高峰时段"属于场景要素中的____,"99.5% 的请求满足该时限"属于场景要素中的____,而"1 秒内返回取消结果"刻画的是该场景主要考查的____质量属性。
某自动售货机采用状态模式实现,状态类有 Idle(待机)、HasCoin(已投币)、SoldOut(售罄),事件有 insertCoin(投币)、dispense(出货)。状态切换规则:Idle + insertCoin → HasCoin;HasCoin + dispense → Idle;SoldOut + insertCoin → SoldOut;SoldOut + dispense → SoldOut。初始库存为 3 瓶,起始状态为 Idle。系统依次处理事件序列:insertCoin、dispense、insertCoin、dispense、insertCoin、dispense、insertCoin、dispense。出货一次库存减 1,库存降为 0 时状态自动切换为 SoldOut。按上述规则处理后,机器的最终状态为 ____,整个序列共完成出货次数为 ____ 次。
在Java内置观察者机制中,Observable对象的状态改变后,须先调用setChanged()方法将changed标志置为true,随后调用notifyObservers()才能使观察者的update()方法被触发。某程序编写了如下调用序列:先notifyObservers()(此前未调用setChanged()),再调用setChanged(),最后再调用notifyObservers()。已知有三个观察者已注册到该Observable对象上,则共产生____次update()调用;第一次notifyObservers()无效的原因是changed标志为____。
在Java原型模式中,类 Report 实现 Cloneable,字段有 title(String 类型,值为 "Q3")和 items(int[] 类型,值为 {1,2,3})。其 clone() 方法为:先调用 super.clone() 得到浅拷贝,再执行 copy.items = items.clone()。现执行:Report r1 = new Report(); Report r2 = r1.clone(); 然后 r2.title = "Q4";r2.items[0] = 99。此时 r1.title 的值为____,r1.items[0] 的值为____。若另一类 Report2 完全相同但 clone() 中缺少 items = items.clone() 这一行(纯浅拷贝),同样操作后 r1.items[0] 的值为____。
某地图软件使用享元模式管理树木图标对象。享元工厂维护一个享元池(字典),getFlyweight(key) 方法约定:若 key 已存在于池中则直接返回对应对象,否则创建新享元对象、存入池中并返回。首次调用 getFlyweight("松树") 与 getFlyweight("柳树") 时,工厂共创建 ____ 个对象;随后再次调用 getFlyweight("松树") 时,工厂将返回池中已 ____ 的享元对象,从而避免重复创建,节约内存。
某点餐小程序的菜单树采用组合模式构建:根组合节点「总菜单」包含组合节点「热食区」与叶子节点「饮品单」;「热食区」包含组合节点「面食组」与叶子节点「米饭单」;「面食组」包含叶子节点「拉面」和「饺子」。运行时该树中共创建组合构件实例 ____ 个,叶子构件实例 ____ 个。
在对象创建型模式中,某饮品店有两项独立需求:需求甲——根据顾客选择的咖啡品种(美式、拿铁、卡布奇诺)创建对应的咖啡对象,调用者不关心具体产品类;需求乙——制作一杯复杂咖啡需按固定顺序完成研磨、萃取、加奶、拉花,不同品种每步细节不同,且希望将制作步骤与具体品种分离,使同一套步骤可制作不同咖啡。仅从两种模式的核心分工来看,需求甲更适合采用____模式,需求乙更适合采用____模式。
某网络教学平台为视频播放功能设计了代理类。当学生点击播放时,代理先校验其课程权限,再调用真实的视频播放器;代理类与真实播放器实现相同的接口。若该代理类并非由程序员在源代码中显式编写,而是在程序运行期间由JVM自动生成,则这种代理属于____代理。
某简单工厂模式包含抽象产品 Product、具体产品 A 和 B、工厂类 Factory(其 create() 方法内用 if-else 根据参数分别 new A 或 new B,客户端仅依赖 Product 接口)。现系统需要新增具体产品 C。若采用简单工厂的典型静态工厂方法实现,则除了新增类 C 本身外,还必须修改的已有类的个数是 ___;若改用工厂方法模式,新增产品 C 时需要修改的已有类的个数则是 ___。
某导航系统需支持“最短路”和“避拥堵”两种可替换的路线规划算法。设计中,RoutePolicy 声明统一的 plan(地图, 起点, 终点);ShortestPolicy 与 CrowdAvoidingPolicy 分别实现该接口;Navigator 持有 RoutePolicy 引用,并在规划时委托其执行 plan,客户端可为 Navigator 配置不同实现。按策略模式结构,RoutePolicy 是____,两个具体实现是____,Navigator 是____。
在策略模式的结构中,Context 类持有一个对 Strategy 抽象策略类的引用,客户端在运行时通过向 Context 注入不同的具体策略对象来改变其行为。若系统中共有 4 个具体策略类(ConcreteStrategyA~D),则该模式中抽象策略类的角色应声明为____(填「抽象类」或「接口」,要求能支持多继承场景下的算法族规范定义),Context 与 Strategy 之间是____关系(填「关联/组合」或「继承」),且 Context 中 algorithm() 方法将算法实现____(填「委托」或「内联」)给具体策略对象完成。
某文档编辑器需渲染 500,000 个字符。若不采用享元模式,每个字符对象独立保存一份完整的字形数据,每份字形占 2KB;采用享元模式后,字形作为享元对象共享,全文档实际只有 100 个不同的字形,每个字符对象仅额外保存占 8B 的外部状态(位置与样式引用),内存开销为 100 份字形数据加上全部外部状态。请计算:采用享元模式后共节省内存 ______ KB。
某文档有 1200 个图标实例,分别使用 8 种图标设计;同种设计的图形数据完全相同,位置各不相同。若用享元模式共享相同的内部状态,并将位置作为外部状态传入,需要创建____个图标享元对象。
某程序需要表示大量具有相同固有属性的对象。享元模式通过共享对象中的____,并将随使用情境变化的状态作为外部状态传入,以减少重复对象的创建。
某系统中,类 PaymentA 实现了客户所期望的接口 pay(yuan),但已有的第三方结算库只提供接口 settle(fen)。若新建一个包装类,内部持有该结算库对象并在 pay(yuan) 中调用 settle(100*yuan),则该方案属于____模式,它主要解决的是____不兼容而无法复用的问题;与之不同,桥接模式的核心意图是将____部分与它的实现部分分离,使二者可以独立变化。
在代理模式中,代理类与真实主题类实现相同的____,从而对真实对象的访问进行控制。若某图像查看器在打开文件列表时不立即加载图片数据,而是等到真正显示该图片时才创建真实图像对象,这种按需创建、推迟开销大的对象初始化的代理属于____代理。若代理主要用于对方法调用进行权限检查,拒绝未授权客户端访问真实对象,则属于____代理。
某图像浏览器中,代理对象持有对大图的引用,但在用户真正请求显示前不创建大图对象,仅在首次显示时才实例化它;同时该代理还会检查用户权限,仅允许VIP用户访问高清图。前者体现了____代理,后者体现了____代理。
某系统中,甲对象为客户端提供统一入口,并在一次调用中协调多个子系统完成任务;乙对象与真实对象提供相同接口,先拦截客户端请求,仅在首次需要时创建真实对象。按甲、乙的顺序,它们分别属于____、____模式。