Преобразование приложения в MVC и запуск его в консоли и графическом интерфейсе - PullRequest
2 голосов
/ 12 июня 2010

У меня есть простой калькулятор java gui с 3 системами счисления (есть некоторые ошибки, но это не имеет значения сейчас). В настоящее время весь код находится в одном файле. Моя задача - переписать его как MVC и добавить возможность запуска в графическом или консольном режиме. Как я должен разделить эту программу, чтобы организовать ее как M-V-C? Достаточно ли правильно написано, чтобы добавить к нему функциональность консоли? (думаю, мне придется изменить все методы, вызывающие JLabel Output, на что-то, просто сохраняющее String в качестве аргумента модели и затем имеющее View для его получения).

Вот начальный код:

http://paste.pocoo.org/show/224566/

Вот что у меня уже есть:

Основной:
http://paste.pocoo.org/show/224567/
Модель:
http://paste.pocoo.org/show/224570/
Вид:
http://paste.pocoo.org/show/224569/
Контроллер:
http://paste.pocoo.org/show/224568/

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

Ответы [ 2 ]

0 голосов
/ 12 июня 2010

Вам следует ознакомиться с шаблоном Observer . Этот шаблон позволит вашей модели измениться в любое время, но без необходимости знать различные виды (что мы и ищем).

Проще говоря, модель скажет: «Эй, я изменился. Любой, кто заинтересован, должен действовать соответственно».

0 голосов
/ 12 июня 2010

Текущее разделение выглядит хорошо. Вот несколько указателей для реализации представления консоли:

  • представляет действия контроллера независимо от интерфейса пользователя. Например, абстрактный Action класс. Затем представление вызывает действие в ответ на жесты пользовательского интерфейса. Это сохраняет контроллер независимым от реализации представления и позволяет одному и тому же контроллеру использоваться несколькими представлениями.
    • добавить уведомления из модели изменений, чтобы синхронизировать просмотры.

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

Хорошим тестом MVC является создание двух представлений для одной и той же модели и контроллера - оба должны работать правильно и обновляться в зависимости от изменений другого.

...