Субъект говорит это уже:
Я сейчас думаю о следующей проблеме дизайна: я определяю интерфейс для конкретного типа объекта, который содержит различные методы.Теперь у меня есть проблема, что различным реализациям этого интерфейса требуются дополнительные / разные методы-параметры (потому что способ их реализации делает это необходимым), который я не могу включить в интерфейс, потому что они не являются общими для all реализации интерфейса.
Теперь я понимаю, что реализации интерфейса могут поставляться со своими собственными файлами свойств, загружая оттуда свои дополнительные параметры, но что если эти параметры необходимо передать во время выполнения?
В настоящее время я могу думать только о том, чтобы передать Map<String, Object> parameters
для преодоления этой проблемы - поскольку JDK-классы, такие как DocumentBuilderFactory , делают нечто очень похожее, предоставляя такие методы, как setAttribute(String attName, Object attValue)
, это выглядит как выполнимый подходДля решения этой проблемы.Тем не менее, мне было бы интересно узнать, как другие решают подобные проблемы, альтернативные идеи?
Я не хочу выводить из интерфейса и добавлять дополнительные методы, поскольку в моем случае мне бы пришлось выбросить NotImplementException
изметоды базового интерфейса.
ОБНОВЛЕНИЕ :
Какие могут быть возможные проблемы Map-подхода?Реализующие классы могут полностью игнорировать его, если они не могут использовать дополнительные параметры.Другие могут проверить, содержит ли Map требуемые имена параметров, проверить тип их значений и использовать их, если они действительны, если нет, выдать исключение.Я также видел, как это используется для абстрактного класса JAXBContext, так что, похоже, это общий подход ..
ОБНОВЛЕНИЕ :
Я решил пойти на карту- Подход, так как я не вижу никаких явных недостатков, и он также используется в JDK (да, я знаю, что это не обязательно много значит :) Поскольку я не могу принять ответ на этот вопрос, я просто буду голосовать.Спасибо за ваш вклад!
С уважением,
- qu