/ / Це ​​MVC, коли представлення не взаємодіє з моделлю? - .net, модель-перегляд-контролер, дизайн-шаблони

Це MVC, коли представлення не взаємодіє з моделлю? - .net, model-view-controller, дизайн-схеми

Я розробив MVC (в.NET), де Вид не має посилання на Модель. Про контролер це знає лише він. Традиційний MVC-шаблон має всі частини, що спілкуються один з одним. У моєму випадку Контролер в основному є посередником. Це не дозволяє виключати будь-які винятки чи логіку з виду. Він має нульову залежність від Моделі. Це вже не MVC?

Відповіді:

19 за відповідь № 1

Те, що ви описуєте, насправді є підмножиною Model-View-Controller, що називається Пасивний вид.

альт текст

Пасивний вид - це ще одна зміна намодель-перегляд-контролер і модель-перегляд-презентатор. Як і з цими інтерфейс користувача розділений між поданням, яке обробляє дисплей і контролер, що відповідає на жести користувачів. The суттєві зміни з пасивним видом полягає в тому, що погляд зроблений повністю пасивний і більше не несе відповідальності для оновлення від моделі. Як в результаті вся логіка перегляду є контролер. Як результат, є відсутність залежності в будь-якому напрямку між видом і моделлю.

Мартін Фаулер про це говорить в вище посилання і коротко обговорює інші варіанти тут.


1 для відповіді № 2

Я думаю, а не MVC, це просто VC, так?

У реалізаціях MVC представлення підписується назміни в моделі та діє на контролер; контролер вносить зміни в модель, які поширюються на погляди шляхом їх посилання на модель. У вашому випадку це здається більше схожим на те, що ви поховали модель у своєму контролері (адже ви маєте дістати свої дані звідкись); це "необов'язково погано чи що-небудь", але це також не MVC у строгому розумінні.


0 для відповіді № 3

Ваш підхід здається дуже схожим MVP, але я не можу сказати точно без додаткових подробиць.


0 для відповіді № 4

У суворому сенсі ні. Але чи є ШЛЯХ для перегляду, якщо це необхідно, без зміни архітектури / інтерфейсів?

[Наприклад, якщо у вас реалізований метод TalkToModel (), навіть якщо ви його ще не використовуєте, це, на мій погляд, MVC.]