使用继承与接口的java装饰器设计模式
我想使用继承(Decorator extends Component
)实现Decorator设计模式,因为我需要访问组件类的受保护字段/方法
问题在于,组件类表示一个算法,它在构造时执行一些预处理,并保存大量数据。现在,每次我装饰一个组件时,我都会创建一个新的装饰器实例,它需要构造一个新的(无用的)组件实例来执行不需要的计算并保存不需要的数据
我想使用接口而不是继承,但这样我就无法访问组件的受保护信息
在扩展组件类时,我担心资源浪费是对的吗?如果是这样的话,我如何避免它而不失去我所需要的信息
最后一点注意:我可以创建Decorator实例,为它提供“虚拟”数据,这样它将执行最小的计算量,但是这个解决方案感觉很混乱
多谢各位
# 1 楼答案
我不确定这是否算作装饰图案。听起来更像是普通的古老遗产
显然这取决于你浪费了多少资源
您可以通过扩展它并添加访问所需受保护部分的方法来“打开”
Component
。然后使用接口和组合来实现这个新类的装饰器# 2 楼答案
显然,你的
Component
类并不是设计用来“装饰”的。你想过重构它吗