有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用继承与接口的java装饰器设计模式

我想使用继承(Decorator extends Component)实现Decorator设计模式,因为我需要访问组件类的受保护字段/方法

问题在于,组件类表示一个算法,它在构造时执行一些预处理,并保存大量数据。现在,每次我装饰一个组件时,我都会创建一个新的装饰器实例,它需要构造一个新的(无用的)组件实例来执行不需要的计算并保存不需要的数据

我想使用接口而不是继承,但这样我就无法访问组件的受保护信息

在扩展组件类时,我担心资源浪费是对的吗?如果是这样的话,我如何避免它而不失去我所需要的信息

最后一点注意:我可以创建Decorator实例,为它提供“虚拟”数据,这样它将执行最小的计算量,但是这个解决方案感觉很混乱

多谢各位


共 (2) 个答案

  1. # 1 楼答案

    我不确定这是否算作装饰图案。听起来更像是普通的古老遗产

    Am i right to worry about the waste of resources when extending the Component class?

    显然这取决于你浪费了多少资源

    And if so, how can i avoid it without losing access to the information i need?

    您可以通过扩展它并添加访问所需受保护部分的方法来“打开”Component。然后使用接口和组合来实现这个新类的装饰器

  2. # 2 楼答案

    显然,你的Component类并不是设计用来“装饰”的。你想过重构它吗