用于增加对象功能的设计模式是 (问题1) ;用于限制对象访问的设计模式是 (问题2) 。
装饰者模式属于结构型设计模式,核心是通过组合而非继承的方式,在不修改原有对象代码与内部结构的前提下,动态为对象叠加额外功能,像Java IO流体系就广泛应用了该模式,能灵活扩展功能同时避免继承带来的类膨胀问题。代理模式同样为结构型设计模式,通过在客户端与目标对象间引入代理对象作为中间层,实现对目标对象的访问控制,常见应用场景包含权限管控、延迟加载、日志埋点等,比如保护代理可限制不同权限用户对目标对象的访问,远程代理能封装网络通信细节。此外,适配器模式侧重解决接口不兼容的适配问题,委派模式核心是任务的转发与分配,可与前两者明确功能边界区分。
本题考察的是设计模式的分类与应用场景。
问题1:
A选项 Adapter(适配器模式):主要用于接口转换,使原本不兼容的类可以协同工作,并不是用来增强对象功能,错误。
B选项 Decorator(装饰者模式):装饰者模式通过在不改变对象结构的前提下,动态地为对象增加额外功能,符合“增加对象功能”的要求,正确。
C选项 Delegation(委派模式):用于将某个任务交给其他对象完成,本身不是为了增强功能,错误。
D选项 Proxy(代理模式):主要用于在访问对象时增加一层控制,而不是单纯增加功能,错误。
所以选择 B。
问题2:
A选项 Adapter(适配器模式):关注接口兼容,并非用于限制访问,错误。
B选项 Decorator(装饰者模式):用于增强功能,而不是限制访问,错误。
C选项 Delegation(委派模式):强调任务转发,不涉及访问限制,错误。
D选项 Proxy(代理模式):代理模式在客户端与目标对象之间引入代理对象,可以控制对目标对象的访问,从而实现权限控制、延迟加载等功能,正确。
所以选择 D。
