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