Я рефакторинг некоторого унаследованного кода, и я застрял в дилемме.
Некоторый контекст, касающийся базы кода. Это веб-сайт панели мониторинга, на котором можно настроить мониторинг некоторых служб. Его можно использовать в двух режимах.
- Stati c:
- Конфигурации для служб, которые необходимо отслеживать, хранятся в файле для чтения. только хранилища данных, например: текст, БД только для чтения.
- Услуги по подключению выполняются автоматически при запуске
- Гиперссылки на динамически встроенные новые службы и редактирование существующих служб закрыты, и контроллеры не загружают страницы.
- Dynami c:
- Конфигурации для служб, которые необходимо отслеживать, хранятся в Хранилище данных для чтения и записи, например: SQL, онлайн-хранилища данных и т. д. c.
- Услуги по загрузке выполняются вручную после запуска на странице регистрации.
- Гиперссылки Динамически встроенные новые сервисы и редактирование существующих сервисов открыты и доступны.
Я хочу реорганизовать следующее.
interface Interface {
def getX()
def getY()
}
class StaticImpl implements Interface {
@implement def getX(): some impl
@implement def getY(): some impl
}
class DynamicImpl extends StaticImpl {
def putX(x): some impl ( not in interface )
def putY(y): some impl ( not in interface )
}
@Bean
Interface bean1 = if dynamic: DynamicImpl() else: StaticImpl()
@Bean
DynamicImpl bean2 = DynamicImpl()
bean1 используется для действий, которые могут быть вызваны во время stati c и dynamic * 1 058 * mode
bean2 используется для действий, которые вызываются только во время Dynami c mode
У меня есть две идеи на данный момент
- переместите putX, putY в интерфейс и оставьте пустую реализацию в StaticImpl, т.е. они ничего не делают
- создают новый интерфейс для putX, putY и делают bean2 нулевым в режиме stati c.
Я хотел бы знать, если это хорошо, или есть ли другой способ реорганизации этого.
Заранее спасибо.