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