gpt4 book ai didi

java - 修改方法返回值的模式

转载 作者:行者123 更新时间:2023-11-30 07:29:24 25 4
gpt4 key购买 nike

我有一个为请求创建 URL 的函数,如下所示:

public String createUrl(String path, String filename) {
return new StringBuilder(path).append("?filename=").append(filename).toString();
}

现在,我要做的是将另一个参数添加到名为 transactionId 的 URL。一个天真的实现是:

 public String createUrl(String path, String filename,String transactionId) {
return new StringBuilder(path).append("?filename=").append(filename).append("?transactionId=").append(transactionId).toString();
}

或者我可以在某个地方有一个静态方法返回一个 transactionID 并修改代码如下:

 public String createUrl(String path, String filename) {
return new StringBuilder(path).append("?filename=").append(filename).append("?transactionId=").append(TransactionMonitor.getTransactionId()).toString();
}

这两种方法都让我修改了预先存在的代码。有没有一种方法可以用来用新参数装饰方法返回的 url。此外,如果解决方案是可配置的,那就太好了。

谢谢

最佳答案

您可以创建为您构建 url 的 UrlBuilder 类:

class UrlBuilder {

private String path;

private Map<String, String> parameters = new LinkedHashMap<String, String>();

public UrlBuilder path(String path) {
this.path = path;
return this;
}

public UrlBuilder parameter(String param, String value) {
parameters.add(param, value);
return this;
}


public String build() {
String paramsString = "";

for (Map.Entry<String, String> entry: parameters.entrySet()) {
if (paramsString.isEmpty()) {
paramsString += "?";
}
paramsString += params.getKey() + "=" + params.getValue();
}

return path + paramsString;
}

}

并在你的代码中使用它

new UrlBuilder().path("http://google.com").params("q", "java").build()

关于java - 修改方法返回值的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8510166/

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