Какой шаблон дизайна? Мне нужно два режима в моем приложении, редактировать и просматривать - PullRequest
2 голосов
/ 17 сентября 2009

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

Есть предложения?

Ответы [ 7 ]

4 голосов
/ 17 сентября 2009

Отдельный подкласс для каждой реализации с общими функциями либо в общем суперклассе, либо с использованием шаблона Template Method .

2 голосов
/ 17 сентября 2009

Возможно, шаблон состояния ?

1 голос
/ 17 сентября 2009

Абстрактная фабрика , или Прокси . Ваш контроллер будет содержать какой-то экземпляр Factory или Proxy, который используется для извлечения «режима» и соответствующего действия.

0 голосов
/ 19 марта 2010

В CafeTownsend демонстрация, сделанная с помощью PureMVC, похожая ситуация, когда есть два разных вида и два отдельных посредника. Вам абсолютно не нужен условный код для этого. Я не знаю, какую технологию и язык программирования вы используете, но во Flex это будет ViewStack с ListView и EditView в качестве дочерних элементов:

Соответствующий медиатор регистрируется по требованию при создании представления. Вы можете проверить другие реализации, используя предыдущую ссылку.

0 голосов
/ 17 сентября 2009

Подходящим местом для такого решения является контроллер MVC. Я бы порекомендовал вам сначала написать это там. Если оно действительно повторяющееся, может быть просто выяснить, как его очистить: вы можете переместить условную логику в базовый класс или, в зависимости от языка, справиться с ней с помощью какого-то фильтра. Вы также можете создать «фабрику» для представлений, которая понимает «режим» вашего приложения. Архитектурно, однако, все это в контроллере.

Вы правы, не желая этого в представлении. Это было бы довольно грязно. Вы, вероятно, хотите две версии представлений, одну для «просмотра» и одну для «редактирования».

В конце концов, это то, для чего предназначены контроллеры. Удачи!

0 голосов
/ 17 сентября 2009

взгляните на JSR-168, портлет Java и его эталонную реализацию, он должен быть похож на то, чего вы пытаетесь достичь.

0 голосов
/ 17 сентября 2009

Трудно сказать наверняка без дополнительной информации, но я бы предложил схему стратегии. Вы можете использовать тот же контроллер и просто поменять объект стратегии, чтобы произвести желаемое изменение в поведении.

Вот статья, которая может оказаться вам полезной: http://www.javaworld.com/javaworld/jw-04-2002/jw-0426-designpatterns.html

...