Це те саме, що і 'ViewModel' від моделі дизайну Model-View-ViewModel (MVVM)
Ні.
Це було б таке :
Це цикли. Дядько Боб ретельно уникав циклів .
Натомість у вас є це:
Що, звичайно, не має циклів. Але, залишаючи вас, цікаво, як погляд знає про оновлення. Ми дійдемо до цього через мить.
чи це простий об’єкт передачі даних (DTO)?
Щоб цитувати Боба з попередньої сторінки:
Якщо ви хочете, ви можете використовувати основні структури або прості об’єкти передачі даних. Або ви можете упакувати його в хешмап або сконструювати в об'єкт.
Чиста архітектура p207
Тож обов’язково, якщо вам подобається.
Але я сильно підозрюю , що насправді пристане є це :
Ця мила маленька зловживання UML протиставляє напрямок залежності вихідного коду з напрямком потоку управління. Тут можна знайти відповідь на ваше запитання.
У використанні відносин:
Потік управління йде в тому ж напрямку, що і залежність вихідного коду.
У взаємовідносинах щодо реалізації:
потік управління, як правило, йде у зворотному напрямку, залежно від вихідного коду.
Що означає, що ви справді дивитесь на це:
Ви повинні бачити, що потік управління ніколи не дістанеться від Ведучого до Погляду.
Як це може бути? Що це означає?
Це означає, що вигляд має власну нитку (що не так незвично), або (як зазначає @Euphoric) потік управління надходить у вигляд із чогось іншого, що не зображено тут.
Якщо це той самий потік, то View буде знати, коли модель View буде готова до читання. Але якщо це так, і вигляд є графічним інтерфейсом, тоді йому буде важко перефарбувати екран, коли користувач переміщатиме його, поки він чекатиме БД.
Якщо вигляд має власну нитку, то у нього є власний потік управління. Це означає, що для здійснення цього Перегляду доведеться опитувати модель View, щоб помітити зміни.
Оскільки ведучий не знає, що View існує, а View не знає, що презентатор існує, вони взагалі не можуть дзвонити один одному. Вони не можуть кидати події один на одного. Все, що може статися, це те, що ведучий напише до View-Model, а View прочитає View-Model. Кожного разу, коли це відчуває.
Згідно з цією діаграмою, єдине, на що поділяють View і Presenter, - це знання View-Model. І це просто структура даних. Тому не сподівайтеся, що вона матиме будь-яку поведінку.
Це може здатися неможливим, але його можна змусити працювати, навіть якщо View-Model є складним. Одне невелике оновлене поле - це все, що перегляд повинен опитати, щоб виявити зміни.
Тепер, звичайно, ви можете наполягати на використанні шаблону спостерігачів, або хочете, щоб це питання приховували від вас, але, будь ласка, розумійте, що вам цього не потрібно.
Ось трохи задоволення я проілюстрував потік управління:
Зауважте, що коли ви бачите, як потік йде всупереч визначеним раніше напрямкам, те, що ви бачите, - це дзвінок, який повертається. Цей трюк не допоможе нам дістатися до Перегляду. Ну, якщо ми спочатку не повернемося до того, що називається Контролером. Або ви могли просто змінити дизайн, щоб ви могли перейти до перегляду. Це також виправляє те, що схоже на початок йо-йо проблеми з доступом до даних та її інтерфейсом.
Єдине інше, що тут слід навчитися, окрім цього, - це те, що інтерактор Use Case може в значній мірі називати речі в будь-якому порядку, до якого він хоче, доки він останній закликає ведучого.