В моем текущем проекте я определил следующий интерфейс:
public interface CmdExecutor {
void execute(String[] tokens, OutputStream outputStream, List<ServerWorker> serverWorkers) throws IOException;
}
Каждому CmdExecutor
нужны токены и outputStream, но после выполнения его работы мне нужно обновить некоторую информацию в List<ServerWorker>
.
Есть какой-то шаблон дизайна, который может помочь мне не передавать каждому работнику этот Список? Я слышал об использовании «шины событий», есть какой-то другой вариант, кроме этого подхода?
Спасибо
РЕДАКТИРОВАТЬ:
Возможно, я выразил себя неправильно. Я имел в виду, что все мои CmdExecutor
нуждаются String[] tokens
, но только некоторым из них необходимо использовать OutputStream outputStream
и List<ServerWorker> serverWorkers
. Поэтому я нахожу плохой дизайн для жесткого кода в моем интерфейсе всех необязательных параметров только потому, что они нужны какой-то реализации.
Я попробовал заводской шаблон, но затем мне пришлось добавить все необязательные параметры на заводе. Таким образом, фабрика может передавать правильные параметры каждой реализации, которая нуждается в них.
Есть ли какой-то шаблон, который я могу использовать для разделения ответственности моего объекта? Что-то вроде: шаблон наблюдателя? образец слушателя? события?
Я прочитал многие из этих имен на inte rnet, но не могу понять, какое из них соответствует моим потребностям.
Спасибо