Как переключаться между реализациями моего класса SomethingManager? - PullRequest
4 голосов
/ 01 февраля 2011

У меня есть приложение с интерфейсом OrgManager, которое еще не создано OrgManagerImpl

OrgManagerImpl должен пойти и поговорить с некоторыми сторонними REST API, к которым у нас пока нет доступа.

Итак, пока я тестирую веб-интерфейс, я написал макет OrgManagerImpl, который реализует OrgManager, но при запуске мне нужно поменять эту реализацию поверх.

Однако сейчас я нахожусь в ситуации, когда я хочу, чтобы сервлет выбрал свою реализацию OrgManager в зависимости от некоторого условия.

Также, когда я вызываю myOrgManager.findCompany ("SomeCompanyId"), я хочу, чтобы myOrgManager пошел и посмотрел на все возможные реализации, чтобы найти компанию и составить большой список.

Также мне хотелось бы, чтобы в myOrgManager.createCompany (company) я предпочитал одну реализацию другим.

Кажется, я направляюсь к объекту UserManagerManager ... но я чувствую, что в нем, вероятно, отсутствует некоторая точка Java или объектно-ориентированного проектирования, о которой я должен знать.

Может кто-нибудь предложить шаблон или стратегию, которую я должен использовать вместо этого?

Спасибо

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Если вы используете Spring, то ваша реализация может быть настроена и внедрена.Тип среды выполнения (т. Е. Реализация) может быть легко изменен.

В качестве альтернативы, если вы не используете Spring, вы можете посмотреть на какой-то шаблон фабрики, где фабрика решает, какую реализацию предоставитьвы.Ваша фабрика может использовать какую-то внешнюю конфигурацию (например, файл конфигурации, переменную окружения и т. Д.), Чтобы выбрать используемую реализацию.

2 голосов
/ 01 февраля 2011

Пружина DI очень полезна здесь.

Вы переключаетесь на другую реализацию, просто изменяя xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...