Я читав про Controller Model View, Model View Presenter, Model View ViewModel і так далі, і загалом поняття, що лежить в основі, здається досить простим: зрозуміти, що гарні візуальні та наукові кишки є окремими та неосвіченими один до одного, як можливо. Немає логіки арахісового масла в дизайнерському шоколаді; круто, мені це подобається.
Проблема в тому, що я все ще трохи нечіткий щодо тієї третьої частини ... тієї, що не є моделлю чи переглядом. У кожного, схоже, є своя ідея, як його називати, що він повинен робити, що належним чином, що просто не так ... і я збиваюся з думки, намагаючись зрозуміти, коли презентатор стає ViewModel і коли View не повинен ' не робити це, тому що це робота ведучого і ...
Я розгулюю.
Замість того, щоб попросити когось пояснити різницю між ними - адже це вже було зроблено раз і раз (я знаю; я прочитав більше статей, ніж можу порахувати) - мені було б цікаво почути думки небагато програмістів на тій моделі, яку я сам спіймав.
З цього приводу , що б ви класифікували цей дизайн як, і, мабуть, важливіше, чи бачите ви про це щось, що очевидно смокче? Звичайно, я хотів би почути, що я роблю добре, якщо це справді міцний дизайн, але я б швидше дав ґрунтовні поради над похвалою.
Примітка: я буду використовувати "Міст" для загадкової третьої частини Model-View-? щоб уникнути будь-яких підсвідомих пропозицій того, яким воно має бути ".
Модель
- Є повноваження щодо даних.
- Отримує інформацію про запитувані зміни від Міста.
- Містить і виконує всю логіку того, як дані стосуються інших даних.
Повідомляє міст, коли дані змінюються (для даних, якими Bridge виявив інтерес).Редагування слів: Дозволяє стороннім абонентам (про яких вона нічого не знає) контролювати стан або результати розрахунків.- Має нульові знання про Вид.
Вид
- Займається наданням користувачеві способу перегляду та обробки даних.
- Отримує інформацію про оновлення даних від Bridge.
- Містить та виконує всю логіку щодо подання даних та елементів керування користувачеві.
- Повідомляє міст, коли користувач здійснив дію, яка (можливо) впливає на Модель.
- Інформує міст, яка інформація його цікавить.
- Має нульові знання про Модель.
Міст
- Є координатором і перекладачем між Модель та Вид.
- Вносить будь-які відповідні зміни форматування для інформації, що передається між Моделлю та Переглядом.
- Зберігає інформацію про те, "хто повинен знати, що".
- Володіє знаннями як моделі, так і виду.
додаткові нотатки
- У складніших програмах зазвичай існує декілька Моделей. У цій ситуації міст, як правило, бере на себе завдання координації / перекладу між декількома Моделями, і, таким чином, стає авторитетом щодо того, до чого повинні бути побудовані моделі протокольних / API / дизайн. (наприклад, якщо створюється програма для карткових ігор та ви хочете побудувати альтернативну модель переміщення колоди, слід використовувати Bridge для визначення функцій, необхідних для належного зв’язку з мостом.)
- У невеликих простих програмах, що мають лише один вид і модель, міст звичайно "припускає", яка функціональність доступна з обох сторін. Однак, оскільки програми стають складнішими, рекомендується, щоб Перегляд (и) та Моделі (и) звітували про свою функціональність на Bridge, щоб уникнути неефективності та помилок.
Я думаю, що саме про це висвітлює. У будь-якому разі я вітаю будь-які питання, які ви можете мати щодо дизайну, який я схильний використовувати, і я також заохочую будь-які пропозиції.
І як завжди, дякую за ваш час.