首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >装饰器设计模式问题

装饰器设计模式问题
EN

Stack Overflow用户
提问于 2013-04-14 19:15:09
回答 1查看 113关注 0票数 1

我正在为使用装饰器模式的正确性而苦苦挣扎。让我们以“暗黑破坏神2”游戏为例。有一些物品(例如)剑,你可以用珠宝装饰,并且剑会改变,例如更多的攻击点或剑的名称修改。因此,从这个角度来看,剑是一个可以装饰的具体物体,而珠宝是装饰品。但珠宝也可以作为独立的、独立的物品,它们也有名称、描述和其他说明符。如何解决这个问题?我想有一个‘宝石’是独立的,可以得到他的名字,描述,但我也可以用这个jevel装饰一些剑。请注意,jevel和sword都有共同的说明符,比如name或description,它们是独立的。在装饰一把剑时,剑必须变成一个新的名字,例如“紫水晶剑”,而获得独立的紫水晶的名字,它应该返回“一个旧的紫水晶”。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-04-14 20:31:11

珠宝不应该是装饰品,因为它们不代表相同的功能,即剑。但是,您可以使用SwordWithJewels,也可以使用伪代码:

代码语言:javascript
复制
interface ISword { Stab(); }
class Sword : ISword { Stab();  }
class SwordWithJewels : ISword { Stab(); }

SwordWithJewels可能应该在构造过程中将珠宝作为参数,直接或间接通过拥有珠宝的另一个对象,并使用该信息来计算命中强度或名称或任何需要的东西。

但请注意,这只是一种选择,根据上下文的不同,这可能过于夸张了。如果你认为珠宝是一种库存物品,那么使用其他方法可能更有意义(我故意避免使用pattern这个词,因为从“我需要为此使用一些模式”的想法开始,通常会导致糟糕的代码)。只需遍历库存物品列表,并让它们中的每一个添加或删除命中的强力点也是有意义的,这更类似于访问者(如果你想要一个熟悉的名字)。

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

https://stackoverflow.com/questions/15998441

复制
相关文章

相似问题

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