设计模式以避免传递不必要的参数



在我当前的项目中,我定义了以下接口:

public interface CmdExecutor {
void execute(String[] tokens, OutputStream outputStream, List<ServerWorker> serverWorkers) throws IOException;
}

每个CmdExecutor都需要令牌和outputStream,但在执行完他的作业后,我需要更新List<ServerWorker>中的一些信息。

有一些设计模式可以帮助我避免将此列表传递给每个员工?我听说过使用"事件总线",除了这种方法,还有其他选择吗?

谢谢

编辑:

也许我表达错误了。我的意思是,我的所有CmdExecutor都需要String[] tokens,但只有其中的一些需要使用OutputStream outputStreamList<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());
}
}

最新更新