如何解决使用继承vs接口的装饰器设计模式
| 我想使用继承(Decorator extends Component
)实现Decorator设计模式,因为我需要访问Component类的受保护字段/方法。
问题在于Component类代表一种算法,它在构造时执行一些预处理并保存大量数据。现在,每次装饰组件时,我都会创建一个新的Decorator实例,该实例将需要构造一个新的(无用的)Component实例,以执行不需要的计算并保存不需要的数据。
我想使用接口而不是继承,但是我将无法访问组件的受保护信息。
我在扩展Component类时担心资源浪费吗?如果是这样,我如何避免出现这种情况而又不会失去对所需信息的访问权限?
最后一点:我可以创建Decorator实例,为它提供\“ dummy \”数据,以使其执行的计算量最少,但是此解决方案让人感到混乱。
谢谢。
解决方法
我不确定这是否真的算作装饰器模式。听起来更像是普通的旧继承。
我在扩展Component类时担心资源浪费吗?
显然取决于您浪费了多少资源。
如果是这样,我如何避免出现这种情况而又不会失去对所需信息的访问权限?
您可以通过扩展它并添加用于访问所需保护部分的方法来“打开” up1。然后使用接口和组合为该新类实现一个装饰器。
, 显然,您的“ 1”类课程不是“装饰”的。您是否打算重构它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。