![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
strange mood
|
Цитата:
Цитата:
Цитата:
Как устроено: - Поведение (пачка методов, обрабатывающих действия пользователя) для каждого состояния описывается в отдельном классе, вся пачка классов-поведений имеет общий интерфейс. - Контроллер содержит ссылку на текущий объект-поведение (композиция) Как используется поведение: - Контроллер обращается к методам поведения по ссылке (динамическое связывание) При смене состояния: - Контроллер обращается к фабрике поведений, передавая туда новое состояние - Фабрика получает состояние и отдает соответствующее ему поведение - Контроллер запоминает полученное поведение как текущее Скорее всего, поведению потребуется ссылка на модель. Ее можно либо передавать в каждый метод (в таком случае поведение можно вообще сделать статическим классом), либо в конструктор объекта (через фабрику). А вообще, если реакция морковки зависит только от состояния, выбранного инструмента и ее модели, то зачем тогда плодить кучу одинаковых контроллеров? Можно сделать один контроллер для всех морковок, который хранит их модели в массиве, и тоже реализован по описанной выше схеме. Я бы сделал именно так.
__________________
тонкий тролль, осеянный благодатью Последний раз редактировалось Gaen; 25.03.2011 в 02:43. |
![]() |
Часовой пояс GMT +4, время: 11:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|