Что такое модель в шаблонах проектирования пользовательского интерфейса, таких как MVC, MVP, MVVM? - PullRequest
5 голосов
/ 02 января 2011

Я видел множество учебных пособий и примеров, использующих шаблоны проектирования пользовательского интерфейса Model-View, и все они реализуют их довольно по-разному, особенно в части Model. В некоторых примерах Model - это данные (фактическое представление объекта в некоторой БД), в некоторых это уровень доступа к данным (например, шаблон репозитория), в некоторых это уровень обслуживания ...
Если кто-то скажет вам, что он использует шаблон MV * в своем приложении, что он скажет вам о дизайне приложения? Поддерживает ли он представление базы данных в памяти в графе объектов и использует его в качестве источника данных или некоторого уровня доступа к данным для запроса базы данных ...

Что вы выберете в качестве модели для ориентированного на данные приложения интеллектуального клиента, содержащего в основном вкладки с таблицами?

Ответы [ 4 ]

7 голосов
/ 02 января 2011

Слово модель используется, по крайней мере, в двух смыслах. Есть модель вашего домена. Здесь смысл в том, как вы представляете свои данные. Есть много способов структурировать ваши данные, а также много способов получить к ним доступ. Когда мы говорим о модели в этом смысле, мы не особенно заинтересованы в том, как вы получаете доступ к структурам, которые ее составляют, то есть к уровню доступа к данным или персистентности, хотя вы также можете слышать, как люди говорят о модели персистентности. Под этим подразумеваются особые принципы, которые использует постоянная реализация, такие как ActiveRecord или Repository. Вы также можете услышать, что их называют шаблонами.

Наконец, слово модель имеет очень специфическое значение в MVC, MVP и MVVM в контексте представления. В этом контексте это означает, что конкретный объект данных связан с представлением, моделью представления. Это может быть один из объектов вашего домена, но, как правило, это объект для конкретного вида, который инкапсулирует данные из одного или нескольких объектов домена вместе со вспомогательными данными, такими как пользовательские данные, которые используются конкретным представлением.

Для вашего приложения выберите модель персистентности, которая лучше всего подходит для вашей среды разработки и языка - LINQ to SQL, LINQ to Entities, nHibernate, Castle ActiveRecord и т. Д. В мире MS. Создайте для каждого вида модели (классы) для каждого вида. ваших представлений, которые содержат данные, необходимые для этого представления. Используйте ваши контроллеры для запроса модели вашего домена, чтобы извлечь информацию, необходимую представлению, и сопоставить ее с моделью представления.

0 голосов
/ 19 февраля 2012

Модель можно рассматривать как контейнер данных, который облегчает рендеринг компонента представления и / или сохранение данных в / из источника данных (т.е. базы данных и т. Д.).Помимо элементов контейнера данных модель может содержать или не содержать поведение в зависимости от контекста проектирования соответствующей архитектуры.

Хотя термин «модель» часто обсуждается и используется в контексте шаблона Model-View-Controller, онявляется одним из наиболее важных соображений в современном мире архитектуры программного обеспечения

Возможно, вы захотите посмотреть следующую статью , где описано несколько популярных и новых шаблонов проектирования, связанных с компонентом и моделью представления.

0 голосов
/ 02 января 2011

Модель обычно ссылается на уровень данных, но, как я обнаружил, в MVC это может быть немного обманчиво при реализации более подходящего подхода. Причина этого в том, что модель не содержится в собственной сборке.

Вот некоторые очень полезные отзывы, которые я получил на похожий вопрос Путаница из-за MVC и модели сущностей

0 голосов
/ 02 января 2011

Если кто-то говорит, что он использует шаблон MV *, это означает, что приложение разбито на несколько частей, действующих без прямой ссылки на определенный тип, оно ничего не говорит о фактической реализации. MVVM означает, что у вас есть модель, часть ViewModel и View, и все.

Модель - это ваше хранилище данных. Это ничего не говорит о его реализации, это может быть что угодно, в зависимости от поставленной задачи. Однако к нему следует обращаться через интерфейсы, чтобы вы могли быстро обмениваться реализацией. В этом, в некотором смысле, и заключается весь смысл паттерна MVVM - разделение трех уровней с помощью интерфейсов.

Ваше описание звучит во многом как мой проект на данный момент - я использую sqlite в качестве резервного хранилища с Entity Framework в качестве ORM. Тем не менее, я также использую T4 для генерации объектов Dto, которые затем отображаются через autopper во ViewModel, так как им нужны только данные, а не постоянство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...