Если вы хотите использовать «резервное» решение, то лучше всего группировать такие сервисы под общим интерфейсом, а не пытаться создавать по одному за раз, как «цепочку ответственности»: первое, что может быть реализовано, возвращает.Конечно, в ваших клиентах вы будете использовать интерфейс, так что этот процесс будет совершенно простым для «разработчика клиента».
Лучший способ добиться этого - иметь что-то вроде SessionStorageFactory
(так, например, общий), гдеВы можете «зарегистрировать» все конкретные фабрики (RedisFactory
, ..., DefaultSessionStorageFactory
) и попытаться создать их по одному.
Конечно, недостатком является то, что если вам может понадобиться «надмножество»атрибута (например, host
, port
и т. д.), который бесполезен для всех фабрик, кроме конкретного, для которого требуется параметр.