【发布时间】:2011-09-08 15:04:12
【问题描述】:
我正在尝试使用抽象工厂(根据 http://www.dofactory.com/Patterns/PatternAbstract.aspx)设计一个良好的实体创建系统,但在涉及实例特定参数时我遇到了困难。
例如: 我有两个抽象工厂,一个用于创建射弹,一个用于创建板条箱
现在工厂可以是每种类型的一个实例,它从列表中传递一个抽象参数集(在基类中将共享材质、大小等),特定于类型的参数将是射弹的速度和板条箱的耐用性。
但我正在苦苦挣扎的是,最后当我有这个抽象工厂方法时,我用字符串“BulletProjectile”和“WeakCrate”等参数调用它,我需要提供实例特定的参数,更重要的是对于不同的工厂,它们具有不同的类型-对于射弹,它们将具有位置和速度,而板条箱将仅具有位置。 更糟糕的情况是用户或玩家正在创建一个箱子或类似的对象,并且能够定义其尺寸。我该如何处理?
【问题讨论】:
-
当我在第二段中说任何一个时,我的第二个选择是为每种类型设置不同的工厂实例。 (子弹和手榴弹的 ProjectileFactory 实例
-
@Alas:你试过gamedev.stackexchange.com 吗?也许你有更多的运气,因为你特别要求游戏开发。
-
这不是特定于游戏开发的问题,我只是想我会这样标记它,因为这就是我正在使用的示例。只是假装它们是网络表单而不是我正在创建的项目符号;)
-
@Alas:当然,只是认为它可能对您有更多帮助。 :)
-
获得大量赞成票,因为这是一个棘手的问题:/我只是想不出解决方案
标签: c++ factory-pattern