Хотя «вложенные» шаблоны проектирования весьма распространены, в вашем случае это не обязательно. Опираясь на другие ответы:
Модель
- Содержит все реальные данные, переменные, объекты
- знает, как установить для сохраненных значений данных новые значения
- отвечает на заказы (вызовы методов)
- имеет метод setPreferences (значение1, значение2, значение3 ...);
View
- это IO для приложения, просто вывод и ввод
- он может работать только на себя, на свое состояние
- поддерживает локальные переменные и объекты, например. у него есть JButtons, JMenus, int counter ...
- он знает, как сообщить предъявителю изменения состояния
- его состояние видимо докладчику или раскрывается при вызове метода
- отвечает на заказы (вызовы методов)
- знает, как получить настройки от пользователя
- имеет метод askForPrefs ();
- имеет метод getPrefState ();
Presenter
- реагирует на изменения состояния
- принимает все решения, говорит другим объектам, что делать (а не как)
- знает, когда нужны настройки
- знает, где взять новые настройки и где их поставить
- имеет метод newPrefsAvailable ();
... для получения дополнительной информации от пользователя. Я полагаю, что в случае этих событий целесообразно, чтобы представление Swing создавало новое окно JDialog.
Presenter - проверяет модель, определяет новые предпочтения
Ведущий - this.myView.askForPrefs (); // сообщает представлению запросить у пользователя значения pref
View.askForPrefs - открывает окно JDialog, ретвалы сохраняются в виде как изменение состояния
View - this.myPresenter.newPrefsAvailable ();
Presenter - отвечает this.myModel.setPreferences (this.myView.getPrefState ());
Model.setPreferences - изменяет сохраненные значения на View.getPrefState ()
Ведущий - проверяет модель - определяет хорошие предпочтения
Ведущий - продолжает
JDialog рассматривается как просто расширение представления, оно является членом представления, как и JButton.
Модель имеет официальные фактические значения предпочтений, а представление имеет локальные переменные, которые представляют состояние JDialog.