使用inheritance与接口的装饰器设计模式

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

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

我想使用接口而不是inheritance,但后来我无法访问Component的受保护信息。

在扩展Component类时,我是否担心浪费资源? 如果是这样,我怎样才能避免它而不会失去对我所需信息的访问权限?

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

谢谢。

我不确定这实际上是否算作装饰模式。 听起来更像普通的旧遗产。

在扩展Component类时,我是否担心浪费资源?

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

如果是这样,我怎样才能避免它而不会失去对我所需信息的访问权限?

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

显然,您的Component类不是“要装饰”的。 你有没有想过重构它?