Я столкнулся с проблемой проектирования в своем проекте Java. У меня есть кадр MainWindow с несколькими панелями, которые управляют микроскопом в нашей лаборатории. Каждая из этих панелей имеет некоторые текстовые поля, кнопки и т. Д. Для выполнения конкретной задачи.Передайте данные между контроллерами, которые не должны зависеть друг от друга
Я разработал свою программу после шаблона MVC. Каждая панель имеет свой собственный контроллер. Теперь я столкнулся с проблемой проектирования того, как я должен передавать данные между этими контроллерами, не делая их зависимыми друг от друга.
Два примера:
Одна панель начинает серию получения изображений, который занимает около 10 мин. В то время я хотел отключить элементы управления пользовательского интерфейса всех других панелей, поэтому пользователь не может прервать эту серию.
Как только эта серия заканчивается, я хочу отобразить некоторые метаданные об этом приобретении на другой панели (чтобы предварительно заполнить некоторые поля).
Моих идеи до сих пор:
- наблюдатель модель: Имея класс наблюдателя, который прослушивает все панельные контроллеры для событий, которые могут заинтересовать контроллер другой панели. Недостаток заключается в том, что наследование контроллеров блокируется классом Observable. Это не проблема (пока). Я действительно не хочу принимать такое решение так рано, хотя ... хм ... И этот класс наблюдателей, вероятно, со временем будет расти.
- Образец уведомления: Исходя из фона iOS NSNotifications пришло мне в голову. Но в Java нет такой вещи.
Каковы ваши идеи по этой проблеме? Есть ли другие варианты, о которых я не знаю? Является ли мой дизайн плохим в первую очередь?
Дайте мне знать, что вы думаете! Заранее спасибо
Как я могу создать интерфейс Observable? Класс, который расширяет Observable, должен унаследовать все необходимые методы для взаимодействия с его наблюдателями. Я никогда не слышал о шаблоне посредника, я посмотрю на это! –
Ну, конечно, если вы используете java.util.Observable, который является абстрактным классом, вы должны использовать наследование, но вы всегда можете написать свой собственный интерфейс с аналогичной ролью (хороший пример можно найти здесь [http: // javarevisited.blogspot.ru/2011/12/observer-design-pattern-java-example.html)). – Gyrotank