Какой шаблон это рефакторинг? - PullRequest
3 голосов
/ 21 сентября 2010

У меня есть пример с кучей логики в моем классе GUI (winforms). Я собираюсь изменить его так, чтобы в графическом интерфейсе не было логики, а отдельный класс содержал всю логику.

Что это за паттерн? Скажем, у меня был класс формы с именем AddAddressForm, как бы вы назвали связанный файл, содержащий логику? AddAddressMediator (не совсем соответствует этому шаблону), если бы я делал WPF, я бы назвал его ViewModel (но это не так).

Ответы [ 9 ]

2 голосов
/ 21 сентября 2010

Я полагаю, это называется паттерн Модель-Вид-Презентатор.хотя он обычно используется в asp.net, его следует применять и к WinForm.

http://msdn.microsoft.com/en-us/magazine/cc188690.aspx

Мартин Фаулер разбивает исходный шаблон MVP на 2 шаблона, Контролирующий контроллер и Пассивный просмотр , но мне все еще нравится его оригинальное имя, MVP.

2 голосов
/ 21 сентября 2010

В приведенном примере кажется, что ваш объект имеет общие данные.

Взгляните на образец веса в полете тогда.

2 голосов
/ 21 сентября 2010

Я не думаю, что это называется. В прошлом я пытался делать подобные вещи с Windows Forms, но, к сожалению, это не сработало:

Для каждой формы у меня был другой класс, называемый чем-то вроде MyFormLogic, который предположительно содержал всю мою логику для формы, а сама форма просто содержала множество методов и событий для управления формой (такие вещи, как AddButtonClicked событие и AllItems свойство коллекции)

В то время это казалось блестящей идеей (Yay, простое модульное тестирование!), Но на самом деле класс MyFormLogic стал таким же большим и грязным, как и раньше, и теперь у меня было много лишнего бессмысленного кода показ дополнительных событий методов в моем фактическом классе формы. (Создание экземпляра форм также было проблемой)

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

2 голосов
/ 21 сентября 2010

Звучит что-то вроде модель-представление-контроллер без модельной части.

1 голос
/ 21 сентября 2010

То, что вы описываете, все еще является шаблоном Model-View-ViewModel, который не относится к WPF. Основной принцип заключается в том, что ViewModel содержит состояние и логику, а View постоянно синхронизируется с ViewModel. Это хорошо и легко с привязками WPF, но они не являются обязательным условием; любой пользовательский интерфейс с сохранением состояния может использовать MVVM. Аромат формы шаблона может стать довольно многословным со стороны вида.

1 голос
/ 21 сентября 2010

Я полагаю, что это называется Humble View.

Для получения более подробной информации и различных подходов см. Раздел Humble View на странице GUI Architectures на martinfowler.com .

1 голос
/ 21 сентября 2010

Это модель-представление-контроллер (MVC). В вашем примере Model - это Address, View - это диалоговое окно, а Controller просто передает события из диалога в объект Address.

Примечание: вы можете опустить контроллер для действительно простых ситуаций, но не , если вам когда-нибудь понадобятся автоматические юнит-тесты; разделение (через интерфейсы) окупится.

1 голос
/ 21 сентября 2010

это зависит от типа логики, скажем, у вас есть Conditonal Logic и вы создаете объект, отличный от него, поэтому разделение этого на новый класс будет указывать на Factory Method.

2 - Если у вас есть сложные алгоритмы вваш класс, и вы разделяете его на другой класс (ы), скорее всего, вы используете шаблон стратегии.

возможно также множество других комбинаций.

0 голосов
/ 21 сентября 2010

Похоже на ваше основное разделение интересов, разбив представление и функциональность на разные файлы.Не совсем уверен, действительно ли он подпадает под какой-либо паттерн, скажем так, но он действительно напоминает мне о веб-формах с легкими взглядами и кодами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...