gpt4 book ai didi

java - 如何有效地将各种输入参数传递给类中的方法?

转载 作者:行者123 更新时间:2023-11-30 09:13:26 26 4
gpt4 key购买 nike

下面是我的界面 -

public interface IClient {
public String executeSync(ClientInput input);
}

这是我对接口(interface)的实现 -

public class TestingClient implements IClient {

@Override
public String executeSync(ClientInput input) {

}
}

现在我有一个工厂可以像这样获取 TestingClient 的实例 -

IClient client = TestingClientFactory.getInstance();

现在客户将调用我的 TestingClientexecuteSync 方法,它接受 ClientInput 参数,下面是用于客户端输入

public final class ClientInput {

private Long userid;
private Long clientid;
private Long timeout = 20L;
private boolean debug;
private Map<String, String> parameterMap;

public ClientInput(Long userid, Long clientid, Map<String, String> parameterMap, Long timeout, boolean debug) {
this.userid = userid;
this.clientid = clientid;
this.parameterMap = parameterMap;
this.timeout = timeout;
this.debug = debug;
}

... //getters here
}

因此,当客户调用我们的TestingClientexecuteSync 方法时,他们将像这样创建ClientInput 参数,然后使用工厂获取 TestingClient 的实例,然后相应地调用 executeSync 方法。

Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("attribute", "segmentation");

ClientInput input = new ClientInput(109739281L, 20L, paramMap, 1000L, true);

IClient client = TestingClientFactory.getInstance();
client.executeSync(input);

问题陈述:-

  1. 如上所示,这是生成 ClientInput 参数并传递给 executeSync 方法的正确方法吗?
  2. 我的 ClientInput 中已经有三个 Long 类型的参数,其他开发人员可能不清楚哪个位置用于哪个字段(尤其是在那些漫长的夜晚......)。任何想法如何避免这种情况?
  3. 如果需要更多的输入,就会使构造函数声明变长。我该如何克服这种情况?

最佳答案

如果您有更多参数,请使用构建器模式。这使代码干净。 (参见 this 示例)

例如,你可以有

clientinput.userid("userid)
.clientid("clientid")

一些没有指定的参数可以是可选的。比如timeout和debug没有设置,可以取默认值

关于java - 如何有效地将各种输入参数传递给类中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037892/

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