首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成本装饰者

成本装饰者
EN

Stack Overflow用户
提问于 2009-06-01 09:29:51
回答 2查看 167关注 0票数 0

每个产品都有相关的成本计算器,如:折扣,商家折扣,商家奖励,每月折扣等。在未来,将添加更多的成本计算器。

我们有一个具体的产品类和每个成本计算的许多装饰器。所有产品都应该使用所有的计算器,因为计算器决定根据产品的属性来应用它们的计算,如产品商家id,类别id,颜色等。

而且,我们的系统中有数百万个产品需要计算。所以,我们最好缓存装饰过的计算器。因为,在运行时修饰每个产品实体的成本会很高。但是使用装饰器模式很难做到这点。在我们的情况下使用这种模式似乎是一种味道。

你有什么建议?我们应该使用装饰器、策略还是责任链模式?或者没有模式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-01 09:44:56

所有产品都应该使用所有的计算器,因为计算器决定根据产品的属性来应用它们的计算,如产品商家id,类别id,颜色等。

如果你需要让所有的产品都使用所有的装饰器,那么你并没有从模式中获得任何好处。这是否意味着如果您实现一个新的装饰器,所有现有的实体都必须更新以使用新的装饰器?

装饰器应该只在必要的时候应用于产品,并且只应该应用那些需要的装饰器。

我认为你应该从装饰器中删除这个决定;其他东西应该决定是否应用装饰器,在这种情况下,它将产品包装在适当的装饰器中。这样你就知道如果一个产品被包装在一个装饰器中,这个装饰器正在影响(效果?)产品。

票数 0
EN

Stack Overflow用户

发布于 2009-06-01 09:38:32

在策略模式中,对象的意图会发生变化。

因此,我认为战略将是一个很好的选择。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/934124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档