gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:07:13 25 4
gpt4 key购买 nike

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

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

每个CmdExecutor需要 token 和outputStream,但在执行他的工作后,我需要更新List<ServerWorker>中的一些信息.

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

谢谢

编辑:

也许我表达得不正确。我的意思是全部我的CmdExecutor需求String[] tokens但只有一些需要使用OutputStream outputStreamList<ServerWorker> serverWorkers 。因此,我发现在界面中硬编码所有可选参数是一个糟糕的设计,只是因为某些实现需要它们。

我尝试了工厂模式,但后来我必须在工厂中添加所有可选参数。通过这种方式,工厂可以将正确的参数传递给每个需要它们的实现。

是否有某种模式可以用来分离我的对象的职责?类似于:观察者模式?监听器模式?事件?

我在互联网上读了很多这样的名字,但我不明白哪一个适合我的需要。

谢谢

最佳答案

您可以使用overload对于遵循现有方法的默认方法,传递一个空列表作为第三个参数。

不确定这是否符合任何特定设计模式的描述。

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());
}
}

关于java - 设计模式以避免传递不必要的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61455567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com