блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
|
Правильное использование шаблона стратегия.
Допусти мы делаем игру пакман.
Есть следущие типы элементов.
1) BlankElement - пустая клетка.
2) WallElement - стенка.
3) Packman - наш персонаж.
4) Enemy - наш враг.
5) SuperEnemy - враг, который, допустим, может ходить через стены.
6) Food - пища для пакмана.
ну и т.д.
Вот я на событие перемещения пакмана, врага, супер врага, диспатчу евент, в котором передаются два элемента которые столкнулись. А так же клетка, в которой ето произошло. Событие ловит контроллер.
Так вот, я хочу что бы в контроллере ето красиво обрабатывалось при помощи паттерна стратегия (если есть варианты лучше - you are welcome). Различия могут быть типа: враг не может есть пищу, супервраг может проходить через стены. Возможные решения:
1 - создать кучу классов PackmanToWall, PackmanToFood, PackmanToBlank, PackmanToEnemy... То же самое для врагов и для суперврагов.
Но сами понимаете что во первых это убийственное множество классов. Во вторых если я добавлю, например, элементы bomb, bonus - то надо будет добавлять еще как минимум 6 классов.
2 - создать для каждого двигоющегося объекта свои стратегии PackmanMotion, EnemyMotion, SuperEnemyMotion. Но тогда при добавлении нового элемента прийдется изменять ВСЕ существующие классы. Это не на столько печально - но все равно не шик.
Так как лучше всего разрешить данную ситуацию, что бы код был гибким, стабилным и расширяемым?
|