Я являюсь частью студенческого проекта, и мы должны разработать продукт для компании, использующей Java EE.Как «ведущий архитектор» в проекте, я отвечаю за составление хорошего дизайна, который должен быть гибким для дальнейших расширений.
Справочная информация: Мы должны разработать веб-сайт с графическим интерфейсом перетаскивания с возможностью подключения данныхисточники с манипуляциями с данными для выполнения этих конкретных данных.Графический интерфейс должен быть универсальным и иметь возможность интеграции с будущими продуктами.Это означает, что мы не можем кодировать реализацию на уровне представления.Вместо этого мы будем использовать интерфейс, чтобы определить, какие манипуляции с данными возможны для всех видов продуктов.Тем не менее, каждый продукт может также использоваться для манипулирования данными для конкретного продукта (таким образом, расширяя интерфейс с помощью большего количества методов).
Проблема, с которой я столкнулся в приведенном выше сценарии, заключается в том, что я не понимаю, как мы можем передать эти "данные, специфичные для продуктаманипуляции »в GUI и говорят, что, в дополнение к общему интерфейсу, мы также обладаем этими действиями манипулирования данными ...
Теперь у меня была дискуссия с некоторыми из более опытных программистов из компании, и они сказалиМне кажется, что существует общее решение этой проблемы - более конкретно, известное как «шаблон наблюдателя».Они рисуют что-то вроде [1]
на доске и объясняют, что можно было бы «зарегистрироваться» третьей стороне (getApplicationContext), которая, в свою очередь, могла бы передать интерфейс, специфичный для нашего продукта.Они объяснили, что это обычная проблема, чтобы избавиться от этих неприятных круговых зависимостей.
Теперь я посмотрел на шаблон наблюдателя и на то, как он работает, и я до сих пор не понимаю, как я должен решить проблему.проблема дизайна.Может ли кто-нибудь попытаться объяснить, как это получится в моем конкретном сценарии?У меня нет особых проблем с пониманием того, как это работает с «субъектами» и «наблюдателями».
Вот схема UML, в которой мы используем ссылку на конкретный продукт.Это то, что нежелательно и нам хотелось бы обойти.
(возможно, я все неправильно понял ...)
Извините, но я не могу изменить изображение на правильное.поскольку я новый пользователь ... Вот ссылка на обновленную диаграмму UML: