Вот пример моего интерфейса и двух реализаций:
`public Interface Notifier {
void send(String message);
@Component
public сорт FCMNotifier реализует Notifier {
Код: Выделить всё
@Override
public void send(String message) {
// Use token to send message via FCM
// need token
}
@Component
публичный класс SNSNotifier реализует Notifier {
Код: Выделить всё
@Override
public void send(String message) {
// Use topicArn to send message via SNS
// need topicArn
}
`
Как видите, каждая реализация требует дополнительных параметров (токен для FCMNotifier и themeArn для SNSNotifier). Я хочу сделать этот дизайн более гибким и избежать жесткой привязки параметров к конкретным реализациям.
Мой вопрос:
Как лучше всего обрабатывать такие дополнительные параметры для разных реализаций в масштабируемый и удобный в обслуживании способ?
Должен ли я использовать что-то вроде объекта Context для динамической передачи параметров? Или есть более эффективные шаблоны проектирования для решения этой проблемы?
Должен ли я вместо этого добавить построитель для обработки общих запросов?
Я попробовал использовать и шаблон Builder, и шаблон Decorator, чтобы повысить гибкость. и масштабируемость. Я ожидал, что шаблон Builder поможет динамически создавать уведомления с различными параметрами (например, токенами или темами), а шаблон Decorator позволит мне накладывать дополнительные варианты поведения (например, механизмы регистрации или повтора) вокруг процесса уведомления. Однако я не уверен, правильный ли это подход или есть ли более эффективные шаблоны или методы, которые мне следует рассмотреть для этого варианта использования.
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-interfac