|
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 57
|
||||||||||||||||
Разбираюсь с паттерном MVP04.07.2023, 11:10. Показов 3166. Ответов 48
Метки нет (Все метки)
Доброго времени, всем!
MVP Правильно ли я уловил суть? Model Кликните здесь для просмотра всего текста
View Кликните здесь для просмотра всего текста
Presenter Кликните здесь для просмотра всего текста
Что лучше использовать в моём случае для Model, View - Класс, Абстрактный класс, Интэрфейс или др.? Спасибо!
0
|
||||||||||||||||
| 04.07.2023, 11:10 | |
|
Ответы с готовыми решениями:
48
Как рисовать на форме? Пользуюсь MVP паттерном
|
|
|
|||
| 04.07.2023, 22:26 | |||
|
Добавлено через 2 минуты Абстрактный класс - в твоем случае не очень подходит. Интерфейс можно применить, в качестве контракта для презентера... Но тоже не особо нужен в данном случае.
0
|
|||
|
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 57
|
||||||
| 05.07.2023, 04:14 [ТС] | ||||||
|
wizard41, понятно. изменил Presenter
![]() Кликните здесь для просмотра всего текста
Спасибо!
0
|
||||||
|
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 57
|
||
| 05.07.2023, 18:45 [ТС] | ||
|
в "базе" (List<>) будут лежать массивы строк. не совсем понял куда клоните... Спасибо!
0
|
||
|
Модератор
|
|||||||||||||||
| 05.07.2023, 21:08 | |||||||||||||||
MV*."Модель ADO" - служит для парсинга SQL запросов. Даже в ЕF подобные типы называются уже "Сущность". "Модель в паттерне" - это СЛОЙ приложения в котором находится вся Бизнес (Доменная) Логика. Состоять Модель может из очень многих других объектов. Часто Модель разбивается ещё на подслои. Одним из таких подслоёв нижнего уровня может быть Репозиторий. В задачах где кроме "общения" с БД нет другой БЛ, по сути вся Модель состоит из одного только Репозитория. В упрощённом общении часто под Моделью понимают не весь слой, а только "морду", интерфейс этого слоя через который с Моделью "общаются" её потребители. Добавлено через 12 минут Нужно так:
dataList.Попробуйте:
1
|
|||||||||||||||
|
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 57
|
||||||||||||
| 06.07.2023, 06:18 [ТС] | ||||||||||||
|
ничего лучше кроме ObservableCollection<T>.CollectionChange d не нашёл. решил реализовать через событие, описанное в Model
0
|
||||||||||||
|
Модератор
|
|||||
| 06.07.2023, 11:09 | |||||
|
1) INotifyCollectionChanged - называют "Наблюдаемая коллекция"; 2) IBindingList - "Привязываемый список". ObservableCollection - это самая простая реализация INCC. Для WPF является основным типом мутабельной коллекции.В Формах в основном используется BindingList. WPF тоже может его использовать, но ObservableCollection всё же проще.List<> - это реализация IList<> "Простой индексированный список". Его реализует и T[], и многие другие коллекции. Но вот уведомления об изменении в нём не предусмотренно.Использование в свойствах Модели коллекции за состоянием которой нужно следить - это довольно громоздко и сложно. Из реально используемых таких решений "на ум" приходит только Local.ToObservableCollection() из Контекста БД в EF.Добавлено через 1 минуту
0
|
|||||
|
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 57
|
||||||||||||||||
| 01.08.2023, 12:06 [ТС] | ||||||||||||||||
|
наконец-то, "дошли руки" продолжить обучение...
всё-таки бывает работа отнимает много времени и сил ![]() Model Кликните здесь для просмотра всего текста
View Кликните здесь для просмотра всего текста
Presenter Кликните здесь для просмотра всего текста
Соответствующий вывод Кликните здесь для просмотра всего текста
Произошло добавление элемента в базу данных!
Произошло изменение элемента в базе данных! Произошло добавление элемента в базу данных! Произошло удаление элемента из базы данных!
0
|
||||||||||||||||
|
|
|||
| 01.08.2023, 12:21 | |||
|
Model - библиотека NET Presenter - библиотека NET View - приложение (Console, WF, WPF, Avalonia и т.д.)
0
|
|||
|
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 57
|
|||||||||||||||||
| 01.08.2023, 18:02 [ТС] | |||||||||||||||||
|
что то типа этого? Model Кликните здесь для просмотра всего текста
View Кликните здесь для просмотра всего текста
Presenter Кликните здесь для просмотра всего текста
если нет, то можно Ваш вариант, для понимания?
0
|
|||||||||||||||||
|
|
|
| 02.08.2023, 08:23 | |
|
zaka4kin,
Паттерн MVP Особенности реализации MVP для Windows Forms Добавлено через 1 минуту zaka4kin, И тут на форуме есть пример - Создание программы - ООП модель, MVP
0
|
|
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,227
|
||
| 02.08.2023, 09:15 | ||
|
Например, 1. MVP - Wiki 2. MVP - UI Design pattern - MSDN 3. Fowler - UI Architectures
0
|
||
|
|
|
| 02.08.2023, 09:27 | |
|
zaka4kin, Вызывайте методы Presenter в консоли, кто вам не даёт...
Вы скорее всего не поняли сам смысл паттернов MV*. Они созданы для разделения логических частей приложения, которое упрощает разработку больших приложений в команде. Одни занимаются Model, вторые View, третие Presenter (ViewModel, Controller). И все эти группы людей практически не знают что делают другие, они видят только интерфейсы этих слоёв и работают с ними. Распределение связей в этих паттернах такое 1. Model - сборка сама в себе, о существовании других вообще не догадывается. 2. Presenter (ViewModel, Controller) - имеет связь с Model, точнее с тем что выдано по интерфейсу в публичный доступ. 3. View - знает только о пункте 2. Пункт 1 для него не доступен на прямую. 4. Application - знает о всех слоях и задаёт взаимодействие между ними, запуская нужные сервисы для обслуживания потребностей.
1
|
|
|
Модератор
|
|
| 02.08.2023, 12:38 | |
|
Andrey-MSK, не так. Вы описали за связи в паттерне MVVM. Это строго иерархический паттерн.
Например, в MVC View знает и о контролере, и о модели. Добавлено через 2 минуты В MVP Презентер дёргает View.
1
|
|
|
|
|
| 02.08.2023, 12:48 | |
|
Элд Хасп, Ну бывает
![]() Добавлено через 4 минуты Элд Хасп, Но всё равно - Presenter ну никак не может содержать метод Main(). Вот в этом посте
0
|
|
|
Модератор
|
||
| 02.08.2023, 13:36 | ||
MV*. Здесь обычно происходит создание слоёв, их объектов, внедрение зависимостей.Чтобы не было путаницы, лучше делать все слои MV* в отдельных от App проектах. К сожалению, настройки проектов для платформ GUI делают затруднительным создание View отдельно от App. Особенно для WPF. Поэтому в приложениях с GUI чаще всего App совмещён в одном проекте с View.Совмещать App с Моделью и с VM-Controller-Presenter не имеет смысла ни при каких обстоятельствах.
0
|
||
|
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 57
|
|
| 02.08.2023, 13:59 [ТС] | |
|
Элд Хасп, какой из примеров, был наиболее близок к MVP в контексте Console ?
0
|
|
|
Модератор
|
||
| 02.08.2023, 18:28 | ||
|
В общем смысле - любой паттерн подходит. Консоль - это тип View. Во всех паттернах тип View может быть любым. Другое дело - это вопрос о более частом применении паттерна для того или иного типа View. MVC - исторически это первый паттерн. И, соответственно, примеров его применения для консоли гораздо больше. Потом появились Формы и появилась потребность как-то адаптировать MVC для более удобного использования в приложениях с GUI. Появился MVP. MVVM появился уже как адаптация к WPF. Но даже его можно с успехом использовать в консоли. Для консольного MVP я бы всё равно сделал View (консоль) в проекте с приложением. Там же сделал бы и рантайм сборку приложения - создание и связывание всех слоёв. Но сам класс View должен быть отделён от Program. Модель и Presenter - в отдельных проектах типа "Библиотека классов Standard".
0
|
||
| 02.08.2023, 18:28 | |
|
Помогаю со студенческими работами здесь
20
Не могу разобраться с паттерном Стратегия Незадача с паттерном Цепочка обязанностей
Гостевая книга с паттерном MVC Помогите с паттерном для RegExp Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|