spring - 生成器模式不返回“this”
问题描述
我今天在 Spring Boot 中使用了 RestTemplateBuilder,发现它的方法不返回“this”,而是返回一个新的构建器实例。
public RestTemplateBuilder basicAuthorization(String username, String password) {
return new RestTemplateBuilder(this.detectRequestFactory, this.rootUri,
this.messageConverters, this.requestFactory, this.uriTemplateHandler,
this.errorHandler, new BasicAuthorizationInterceptor(username, password),
this.restTemplateCustomizers, this.requestFactoryCustomizers,
this.interceptors);
}
这是我第一次看到构建器模式最后没有返回“this”。有什么好的理由这样做吗?
解决方案
构建器模式没有义务this
为每个方法返回。它是实现细节,它被封装在类本身中。
据我所知,它是为了不变性而完成的,因此您可以使用相同的RestTemplateBuilder
实例来创建不同的RestTemplate
实例。让我们看一下这个例子:
RestTemplateBuilder basicRestTemplateBuilder = new RestTmplateBuilder();
RestTemplate restTemplateWithBasicAuth = basicRestTemplateBuilder.basicAuthorization(username, password).build();
RestTemplate restTemlateWithUriTemplateHadler = basicRestTemplateBuilder.uriTemplateHandler(uriTemplateHandler).build();
您可以安全地重用相同的构建器实例,而不必担心它会在其他地方配置错误。
推荐阅读
- c# - 如何避免在 appsettings.json 中存储密码或其他敏感数据
- sql-server - 如何使用用户给出的模式和表名构建 sql 查询
- java - 如何模拟调用没有返回值的其他方法的方法
- react-native - 将文本标签添加到弧形 React Native
- java - 如何获取注解上方的注解
- swift - 为什么 UItableview 对象上不显示文本
- excel - 在主工作簿中打开工作表并将其复制到某些工作表
- typescript - 由作为参数提供的回调的返回类型提供的函数的返回类型
- reactjs - Apache 配置允许直接导航到 React 的客户端 URL
- reactjs - 如何在 React 中更改 App 组件的状态