шаблон команд с сохранением состояния - PullRequest
2 голосов
/ 06 февраля 2011

Мне было интересно, как лучше всего представить форму редактирования в контексте модели предметной области, и я получил шаблон проектирования команд.

В соответствии с этим: Использование шаблона проектирования команд Команды должны быть неизменяемыми, а это не то, что мне нужно - мне нужна команда с состоянием с редактируемыми параметрами (вся команда будет редактироваться в пользовательском интерфейсе / форме)

Почему считается плохим иметь команду с контролем состояния?


РЕДАКТИРОВАТЬ : Через некоторое время стало ясно, что я искал шаблон ViewModel. Это подходящий способ для моделирования любого экрана веб-приложения. В основном это контроллер с отслеживанием состояния (для каждого экземпляра представления).

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

Вы все еще хотите, чтобы они были неизменяемыми, потому что их можно затем использовать для воссоздания текущего состояния из снимка.Но они могут иметь все нужные параметры, если вы убедитесь, что они не могут измениться после применения команды.

0 голосов
/ 29 декабря 2012

если вы хотите, чтобы он был изменяемым, я бы предложил использовать шаблон FlyWeight. Вы можете сделать его похожим на шаблон команды, поскольку он является хешем объектов, и он использует те же объекты, если они уже существуют, сохраняя состояние объектов.

Вы можете думать о FlyWeight как о группе одноэлементных объектов, которые можно вызывать на лету (с помощью хэш-функции).

Таким образом, фабрика flyweight будет размещать все ваши объекты в хэш-карте, и вы сможете использовать фабрику, чтобы получить объект, сохраняющий его состояние.

http://www.avajava.com/tutorials/lessons/flyweight-pattern.html -> для справки.

...