У меня проблема с дизайном, на которую я надеюсь получить помощь.Проблема, связанная с архитектурным дизайном
Скажите, что у меня есть доменное имя «Пользователь», «Учреждение».
Этот «Пользователь» может быть зарегистрирован на различные «услуги», например «учет или библиотека». Я создал абстрактный класс «ServiceRegistration», а «Пользователь» имеет список этих регистраций услуг. Эти сервисы - это не что иное, как модули, которые в будущем будут включены в качестве компонента. Поэтому, когда мой компонент библиотеки завершен, я могу подключиться к моей системе. Компонент библиотеки будет иметь класс «LibraryServiceRegistration», который будет храниться в списке «Пользователь» -> «Служба регистрации». «Пользователь» не знает об этом «LibraryServiceRegistration» и, таким образом, становится расширяемым. Компонент библиотеки в настоящее время знает «Пользователь», чтобы он мог хранить информацию «LibraryServiceRegistration» в «Пользователь».
Но теперь скажу, что я создал новые компоненты «Учет», которые применимы к «Пользователь» и «Учреждение». Мой учетный компонент будет иметь «AccountingServiceRegistration», хранящийся в «User» -> «ServiceRegistration» для каждого пользователя и «Institution» -> «ServiceRegistration» для каждого учреждения.
Я хочу изолировать компонент «Бухгалтерский учет», чтобы я мог настроить его на какой домен, который он может предоставить. Таким образом, в настоящее время он может предоставлять услуги «Пользователь» и «Учреждение» в будущем без изменения кода.
Возможно ли это?