Я только начинаю понимать, как написать хорошую архитектуру хорошего программного обеспечения.
система, и я учусь разделять компоненты высокого уровня на слои.
В этом случае я пытаюсь использовать уровни, чтобы моделировать каждый слой как черный
коробка.
В моей архитектуре 4 уровня: презентация, службы приложений,
Бизнес-логика и домен / постоянство. Для целей моего вопроса,
нам действительно нужно сосредоточиться только на службах презентаций и приложений.
Уровень сервисов приложений будет содержать сервис, который позволяет отслеживать
определенного события. Презентация будет иметь несколько взглядов, которые должны
обновлять динамически при изменении модели отслеживания событий. Неотъемлемо,
похоже, мне нужен односторонний механизм распространения изменений.
Поскольку я пытаюсь смоделировать эти слои как уровни, я бы хотел ограничить общение
между объектами Фасад для каждого уровня, и при необходимости разрешить уровень
агрегировать объект из одного уровня ниже, хотя известен только по интерфейсу.
Я программирую это приложение на Java, поэтому очевидная вещь для использования
Наблюдаемый / наблюдатель. Однако мне не нравится, что метод обновления для
Интерфейс Observer заставляет вас приводить аргументы объекта. Я хочу обойти
это путем определения моего собственного интерфейса и класса для этого механизма. Эта проблема,
то, что логика приложения будет зависеть от интерфейса из презентации
Уровень, определенный нет-нет для этой архитектуры. Это знак того, что я должен попробовать
моделирование с помощью MVC и Layer the Model? Или было бы лучше
моделируйте каждое из представлений с помощью интерфейса, известного на уровне служб приложений.
Кажется, это плохое место, и я застрял. Кроме того, я использую шаблон проектирования View-Handler для обработки нескольких представлений.