问题描述
|
我想使用继承(
Decorator extends Component
)实现Decorator设计模式,因为我需要访问Component类的受保护字段/方法。
问题在于Component类代表一种算法,它在构造时执行一些预处理并保存大量数据。现在,每次装饰组件时,我都会创建一个新的Decorator实例,该实例将需要构造一个新的(无用的)Component实例,以执行不需要的计算并保存不需要的数据。
我想使用接口而不是继承,但是我将无法访问组件的受保护信息。
我在扩展Component类时担心资源浪费吗?如果是这样,我如何避免出现这种情况而又不会失去对所需信息的访问权限?
最后一点:我可以创建Decorator实例,为它提供\“ dummy \”数据,以使其执行的计算量最少,但是此解决方案让人感到混乱。
谢谢。
解决方法
我不确定这是否真的算作装饰器模式。听起来更像是普通的旧继承。
我在扩展Component类时担心资源浪费吗?
显然取决于您浪费了多少资源。
如果是这样,我如何避免出现这种情况而又不会失去对所需信息的访问权限?
您可以通过扩展它并添加用于访问所需保护部分的方法来“打开” up1。然后使用接口和组合为该新类实现一个装饰器。
, 显然,您的“ 1”类课程不是“装饰”的。您是否打算重构它?