Я строю простую игру, состоящую из Mobiles - персонажей в игре (Mobs). Каждая моба может выполнять определенные функции. Чтобы дать эту функциональность Mob, я создал Поведение.
Например, скажем, что моб должен перемещаться по игровому полю, я бы дал ему MoveBehavior - это добавлено во внутренний список Behaviors для класса mob:
// Defined in the Mob class
List<Behavior> behaviors;
// Later on, add behavior...
movingMob.addBehavior(new MovingBehavior());
Мой вопрос в том, что. Большинство действий будут манипулировать чем-то о толпе. В примере с MoveBehavior он изменит положение mob X, Y в мире. Однако для каждого поведения требуется конкретная информация, такая как "movementRate" - где следует сохранять MoveRate?
Должен ли он храниться в классе Mob? Другие Мобы могут пытаться взаимодействовать с ним, замедляя/ускоряя толпу, и ему легче получить доступ на уровне мобов... но не у всех мобов есть движение, так что это может вызвать беспорядок.
Или он должен храниться в классе MoveBehavior? Это скрывает его, что затрудняет взаимодействие других мобов - но это не загромождает недвижущийся моб с дополнительными и неиспользуемыми свойствами (например, башня, которая не двигается, никогда не понадобится использовать MoveRate).