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