Это MVC? Какой «шаблон дизайна» я использовал? - PullRequest
3 голосов
/ 26 мая 2009

Существует много путаницы в MVC, но после просмотра книги по шаблонам Head First (примечание, что я ненавижу этот бренд, хотя этот пример был довольно хорошим), он утверждает, что MVC или Model View Controller - это гибрид нескольких шаблонов. - посредник, наблюдатель и т.д ...

В недавнем прототипе я сделал следующее, это C #, но это должно быть просто.

Person : IPerson {
    public Name { get; set;}
    public Age  { get; set;}
}

IPerson - это просто интерфейс, определяющий вышесказанное - я упустил его для простоты.

PersonController : IPersonController {
    public event DetailsUpdated;
    public void SetAge(int age);
    public int GetAge();
    public void SetName(string name);
    public string GetName();
}

Я знаю, что вышеупомянутое могло бы быть свойствами непосредственно - но это - просто простой пример. Событие запускается каждый раз при изменении некоторых данных, например, в SetAge / SetName.

interface IView {
    void Initialize();
    void SetAgeClicked(object sender, EventArgs e);
    void SetNameClicked(object sender, EventArgs e);
}

Инициализация проводов - напр. текстовые поля на форме. SetAge / SetName являются событиями кнопок - поэтому форма / страница и т. Д. Должны иметь следующие методы.

Form : IView {

    // IView is implemented.
    // Form is wired up
    // Initialize is set etc...
}

Я слышал, что тест MVC заключается в том, что когда вы добавляете новое представление, легко его запустить и запустить - ну, да, это так. Однако это MVC? Это что-то еще?

Любой совет / вклад был бы великолепен. Это работает - просто хочу знать, почему, хотя.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 26 мая 2009

Я бы сказал, что то, что у вас есть, больше похоже на MVP (Model-View-Presenter), чем MVC. Существует две основных разновидности MVP ... Supervising Controller и Passive View. То, что у вас здесь есть, кажется наиболее близким к Passive View, который является довольно классической реализацией MVP, которую люди используют для улучшения и абстрагирования WebForms. Вы можете узнать больше о реализации MVP для WebForms здесь:

http://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx

Та же общая идея применима и к Windows Forms.

2 голосов
/ 26 мая 2009

Я буду голосовать за что-то еще.

Причина, по которой я говорю это, состоит в том, что существует масса споров о том, что такое MVC.

См. Что вообще такое контроллер?

1 голос
/ 26 мая 2009

Хотя это реализация MVC, которая у вас есть, она не использует , сделанную Microsoft и недавно выпущенную . Обзор этого от Скотта Гютери, если вы хотите немного истории. Некоторые могут назвать его MVP, где вместо контроллера эта часть называется презентатором, который обычно обрабатывает бизнес-логику и взаимодействие с пользователем.

...