2016-11-10 2 views
-2

Я хочу проверить свои знания, поскольку я видел проект в своей компании по-разному.Правильно ли заданы мои шаблоны проектирования MVC и MVVM?

То, что я знаю, если мы хотим использовать MVC шаблон проектирования в нашем проекте, мы выделим наш проект, как это:

Посмотреть часть нашего дизайна пользовательского интерфейса, что означает ui.xaml файл в WPF, ui.designer.cs в WinForms, ui.xml в Android, ui.qml в QtQuick и ui.ui в XCode.

Контроллер Часть является ближайшим исходным файлом, связанным с файлом дизайнера с похожими именами. Что представляет собой файл ui.xaml.cs в WPF, ui.cs в WinForms, ui.java в Android, ui.h/ui.cpp в QtQuick и ui.swift в XCode.

Модель Часть - это любой другой класс, который выполняет основные операции. Обычно я добавляю суффикс Manager (или что-то в этом роде), чтобы сказать, в чем его ответственность.

и MVVM Я также использовать interface или abstract class что View наследуется от своего View Model части и рассмотреть мой бывший контроллер как часть View.

И одного проекта достаточно для строительства всего.

Но проект в моей компании имеет много классов! папка отдельных библиотек для дизайнеров с именем UserControl, папка других отдельных библиотек с именем View, и другим набор библиотек с именем ViewModel и так обстоит дело для контроллера и Модель. И они говорят, что это смесь MVC и MVVM. Самое удивительное, что у всего программного обеспечения есть 38 отдельных проектов, написанных одним программистом, а команда - небольшая.

Пожалуйста, сообщите мне, верны ли мои знания? И скажите, пожалуйста, если проект в моей компании находится в правильном направлении?

+0

Почему downvote? Пожалуйста, дайте мне знать, чтобы задать более интересные вопросы. –

+0

Я просто блуждаю, как вы собираетесь определить правильный ответ? – Tengiz

+0

@Tengiz Я собираюсь определить правильный ответ, основанный на стиле, которым я поделился своими знаниями. –

ответ

1

Знаете ли вы, что у вас есть проекции на MVC и MVVM? У вас была ошибка в контроллере (ViewModel), и я думаю, что для модели.

Ваш проект в правильном направлении? Не кажется правильным.

Мы используем интерфейсы для всех классов Views и ViewModels (то же самое для контроллеров в MVC), чтобы иметь лучшее управление зависимостями. его называемый IoC (инверсия Control) и метод, который используется в большинстве случаев, мы называем Dependency Injection, который делает класс зависимым от интерфейса (а не конкретного Impl.) с помощью Locator Service или какого-либо объекта поиска службы ,

Прежде всего, вы можете смешать контроллер с MVVM для обработки логических кодов и пусть ViewModel обрабатывать связывание и представление модели данных для зрения, проверьте эти серии по проекту Кода: http://www.codeproject.com/Articles/173618/MVVM-sharp-Episode-1

Но я не большой поклонник MVCVM, если вы не будете использовать все свои преимущества.

Контроллеры или ViewModels - это отдельные классы из Views, в которые мы помещаем наши логические коды. поэтому «ui.xaml.cs» не является, например, контроллером. этот файл является еще одним файлом для класса ui.xaml. они оба являются тем же классом, который мы называем View. Помните, что мы используем шаблоны презентаций для разделения логических кодов из кодов кода View позади.

Модель представляет собой объект свойств, сгруппированных вместе. мы просто стараемся не смешивать класс модели с любыми логическими кодами. Модели могут иметь функции проверки (например, .IsNameValid()) или некоторые другие функции для создания другого представления объекта (например, .ToString()), но не любые логические коды (например, CRUD). Мы не ставим наши основные операции в Модели. основные операции выполняются в контроллерах (ViewModels), но результатом может быть модель, которую мы связываем с некоторыми полями View.

Мы нажимаем кнопку «Поиск пользователя», команда SearchUser запускает функцию в контроллере и в результате устанавливает объект модели пользователя в свойство FoundUser (которое находится в контроллере), а в текстовом поле «Вид» отображается имя FoundUser.

0

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

Также я думаю, что у вас есть некоторые недоразумения в отношении определений Model и Controller, которые, решая, вы можете лучше понять шаблоны.

+0

Каково мое недоразумение? –

+0

Ваше определение модели и контроллера требует пересмотра. Я думаю, вы перепутали эти определения с целыми понятиями MVC или MVVM. –

+0

Я видел учебное пособие от преподавателя университета, который преподавал программирование на базе iOS на основе MVC. можете ли вы пересмотреть его самостоятельно? –

Смежные вопросы