我正在制作一个简单的游戏,其中包含移动的游戏角色(Mobs)。每个Mob都可以执行某些功能。为了赋予Mob这种功能,我创建了一个行为(Behavior)。
比如说,如果一个Mob需要在游戏场地中移动,我会给它MoveBehavior——这会被添加到Mob类的内部行为列表中:
// Defined in the Mob class
List<Behavior> behaviors;
// Later on, add behavior...
movingMob.addBehavior(new MovingBehavior());
我的问题是,大多数行为将操作有关生物的某些内容。在MoveBehavior示例中,它将更改生物在世界中的X,Y位置。但是,每个行为都需要特定的信息,例如“movementRate”,那么应该将movementRate存储在哪里?它应该被存储在Mob类中吗?其他Mob可能会尝试通过减速/加速来与其交互,而在Mob级别上更容易访问... 但并非所有Mobs都具有movementRate,因此它会引起杂乱。
还是应该将其存储在MoveBehavior类中?这样做可以将其隐藏起来,使其他Mobs更难以进行交互 - 但它不会用额外和未使用的属性来弄乱不动的Mob(例如,不移动的塔永远不需要使用movementRate)。