javascript中许多构造函数参数的替代方案



基本上我试图找出如何避免在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) {}

:

  • 构造函数参数被命名,所以更容易理解。
  • 参数可以按任意顺序给出。
  • 你可以提交一些参数

最新更新