在我当前的项目中,我定义了以下接口:
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
。因此,我发现在接口中硬编码所有可选参数是一种糟糕的设计,因为某些实现需要它们。
我尝试了工厂模式,但后来我不得不添加工厂中的所有可选参数。通过这种方式,工厂可以将正确的参数传递给每个需要它们的实现。
有没有一些模式可以用来分离对象的响应?类似于:观察者模式?监听器模式?事件?
我在网上读了很多这样的名字,但我不明白哪一个符合我的需求。
感谢
您可以为默认方法使用重载,该方法遵循现有方法,并传递一个空列表作为第三个参数。
不确定这是否符合任何特定设计模式的描述。
public interface CmdExecutor {
void execute(String[] tokens, OutputStream outputStream, List<ServerWorker> serverWorkers) throws IOException;
default void execute(String[] tokens, OutputStream outputStream) throws IOException {
execute(tokens, outputStream, Collections.emptyList());
}
}