Нужна помощь в понимании шаблона проектирования MVC - PullRequest
0 голосов
/ 16 января 2011

Я пытаюсь найти ood пример шаблона проектирования MVC в Java.

Вот что я понял из прочтения, поправьте меня, если я ошибаюсь:

У меня есть часть Model, которая является логикой программы, скажем, если у нас есть телефонная книга, поэтому добавление и удаление контакта из массива будет моделью.

Gui - это вид, и он содержит кнопки, которые при нажатии на них изменяют модель.

Что я пытаюсь понять, что такое часть контроллера, это ActionListeners? как вы разделяете эти модули на практике.

спасибо

Ответы [ 3 ]

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

Я давно использую MVC и считаю, что это фантастический механизм для подхода к разработке программного обеспечения.Мой совет, пока вы учитесь, - сначала сделать все контроллером.Другими словами, создайте класс, в котором есть члены, которые содержат состояние (модель), а также члены, которые отображают и управляют этим состоянием (представлениями).Сделайте так, чтобы функции вашего класса принимали входные данные из представлений, модифицировали данные, а затем обновляли представления (контроллер).

Это, очевидно, не воплощает разделение, которое подразумевает шаблон проектирования, но поможет вамнаучитесь быстро определять, что является компонентом четкого представления и что является компонентом четкой модели.Затем потребуется некоторое время для разделения на отдельные файлы / объекты независимые объекты модели (что проще всего) и более поздние независимые объекты представления.

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

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

В вашем примере, кажется, что они сходятся.

Тем не менее, возьмем, к примеру, следующий сценарий.
Внутренняя внутренняя книга контактов.
В этом сценарии (предположим, что) большинство пользователей не могут добавлять контакты в адресную книгу.
Только отдел кадров может добавить в список новый контакт (= сотрудник).
Теперь у нас есть 3 действительно отдельных фрагмента кода:

  1. GUI (могут видеть обычные сотрудники)
    Это простой список, который всегда представляет полный список сотрудников / почтовых адресов.
    Сотрудник, который просматривает, не имеет никакого контроля над списком - он просто просматриваетit.
    Сотрудник может изменить внешний вид списка (например, отсортировать его по фамилии, изменить шрифт).
    Любое такое изменение является внутренним для зрителя,и не записывается и не контролируется моделью или контроллером.
  2. Контроллер (доступный только отделу кадров)
    Это может быть другой графический интерфейс, но с возможность вносить изменения всостояние списка (например, добавление / удаление сотрудников).
    Если вы хотите довести это до крайности, предположите, что это окно в виде оболочки.
    Когда сотрудник отдела кадров хочет добавить нового сотрудника, он вводитв оболочку:
    "ДОБАВИТЬ" Джон Смит "johns2 @ internalMail"
  3. Модель - сохранение состояния и наблюдение за изменениями состояния.
    Это как вы описали.Он выполняет необходимую логику процесса.
    Например, он не будет добавлять уже добавленного сотрудника и т. Д.

«Проблема» в вашем сценарии заключается в том, что он, вероятно, не является классическим для MVC.
MVC подразумевает антисимметрию.То есть, НЕ все «зрители» одинаковы, некоторые «специальные» / admin и имеют дополнительные преимущества по сравнению с «обычными» зрителями.

Надеюсь, это прояснит ситуацию.

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

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

...