基本上我试图找出如何避免在javascript的构造函数中有很多参数。原因是我正在和朋友制作一款基于太空的游戏,而飞船是基于模块的。目前,他们可以有一个引擎和许多传感器,武器和殖民地模块。可能还会有更多。每艘船都是根据规格建造的,所以要建造一艘船,你只需要给它一个规格,然后船的建造者处理剩下的事情。但是当制定规范时,我需要提供模块。我想避免的是这样做:
ShipSpec = function(civ, name, hull, engine, sensors, weapons, colony, ...) {}
我不确定最好的解决方案是什么。目前我有一个访问者模式解决方案,其中每个模块都有一个"注册"方法。这个方法有一个参数,然后用这个参数注册自己(如果模块是一个武器,它调用注册武器的方法,如果是一个传感器,它调用注册传感器的方法等)。然后输入:
ShipSpec = function(civ, name, hull, engine, modules) {}
然而,我觉得这可能有点复杂。也许吧。不幸的是,我有时会把事情复杂化。创建一个规范,然后在其创建后添加模块会更好吗?或者这个解决方案可以吗?这个问题还有别的解决办法吗?
我们计划让玩家可以创建规格,也许修改现有的规格,所以我想让它很容易做到这一点在一个好的方式。
照顾,克尔
考虑使用spec对象作为构造函数参数:
var spec = {
civ: "...",
name: "...",
hull: "...",
...
};
ShipSpec = function(spec) {}
:
- 构造函数参数被命名,所以更容易理解。
- 参数可以按任意顺序给出。
- 你可以提交一些参数