gpt4 book ai didi

java - 装饰器模式 - 多个包装器或数量属性?

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:58 25 4
gpt4 key购买 nike

作为 Uni 项目的一部分,我第一次使用装饰器模式。据我所知,该模式似乎更多地意味着以模块化方式添加功能,但是我们已经在咖啡机或披萨机等用途中学到了它,其中对象具有添加的模块化组件 - 更改属性而不是行为。

我试图充分利用这两种用途,但我提出了一个问题。在我们使用的书中的示例(Head First Design Patterns)中,该模式用于咖啡店制作不同的咖啡。例如,牛奶、泡沫、糖、糖屑都是装饰器。

如何实现一个多次使用同一个装饰器的系统(例如,一杯加两糖的咖啡)?你会重新包装咖啡,或者给糖一个数量属性吗?或者(正如我开始怀疑的那样)这永远不会成为问题,因为该模式不是设计用于这种方式的?

最佳答案

装饰器不关心给定对象已经是如何装饰的。装饰器和给定对象都不存储任何有关此的信息。本质上,您想要更 retrofit 饰器的行为/状态,因此这需要从装饰器内部完成。

因此,给 Sugar 一个 quantity 属性。您可以通过添加一个带有额外参数的新构造函数来实现此目的(并让标准构造函数将 quantity 默认为 1 并相应地记录它)。

关于java - 装饰器模式 - 多个包装器或数量属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com