我想为我的游戏设计一个易于扩展的物品系统,我不需要修改现有的代码。我想随时添加带有新效果的物品。使用什么样的设计模式?
特质我的项目有一个共同点:
的名称, 描述, 一个NPC卖出价, 如果可以装备它, 要求的水平, 如果是在战斗中使用, 如果可以在战场以外使用, 冷却时间
所以我可以把它封装到一个类中。但现在有项目效应。
例子: 愈合X健康点, 治愈X点法力值, 消除DEBUFF X, 加BUFF X, 给出了装备X属性点, 有X%的几率造成一些其他影响装备的时候, 等等。
而这些可以像这样组合:医疗x生命值和法力值。前四个是可用项目可以具有的效果的示例,而最后两个是可等效项目可以具有的效果的示例。
其背后的想法是,我在数据库中也有这样的结构,我可以在数据库中添加一个新的效果组合的新项目,然后我的代码读取它并将它一起构建成一个新的奇特项目,没有我必须修改太多。我需要修改代码的唯一时间是显然添加新的效果。
你会如何把它放在一起的设计模式?
我想到了装饰者。对于这个或者甚至是多种设计模式的组合,是否有不同的更好的设计模式?
最简单的方法是给一个ID,每个效果,实现每个效果(和复制的综合效果代码)。如果有多种组合并且组合一次最多只能有2种效果,则可以使用2个ID。至于OOP部分,您可以拥有一个实现每个项目的Effect接口的对象列表。 – nhahtdh