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

问题描述

| 我想使用继承(
Decorator extends Component
)实现Decorator设计模式,因为我需要访问Component类的受保护字段/方法。 问题在于Component类代表一种算法,它在构造时执行一些预处理并保存大量数据。现在,每次装饰组件时,我都会创建一个新的Decorator实例,该实例将需要构造一个新的(无用的)Component实例,以执行不需要的计算并保存不需要的数据。 我想使用接口而不是继承,但是我将无法访问组件的受保护信息。 我在扩展Component类时担心资源浪费吗?如果是这样,我如何避免出现这种情况而又不会失去对所需信息的访问权限? 最后一点:我可以创建Decorator实例,为它提供\“ dummy \”数据,以使其执行的计算量最少,但是此解决方案让人感到混乱。 谢谢。     

解决方法

        我不确定这是否真的算作装饰器模式。听起来更像是普通的旧继承。   我在扩展Component类时担心资源浪费吗? 显然取决于您浪费了多少资源。   如果是这样,我如何避免出现这种情况而又不会失去对所需信息的访问权限? 您可以通过扩展它并添加用于访问所需保护部分的方法来“打开” up1。然后使用接口和组合为该新类实现一个装饰器。     ,        显然,您的“ 1”类课程不是“装饰”的。您是否打算重构它?