我正在编写一些需要抽象 HttpClient 创建的代码。 Http 客户端将是 org.apache.http.client.HttpClient 的实例。 Http 客户端的配置将根据配置信息(即是否是 post/get 请求、基本身份验证、可能是一些 header 等)而有所不同。
为了实现这一点,我正在考虑使用工厂设计模式,它将抽象 Http 客户端的创建;但是,我想知道构建器模式是否是更好的选择。
我已经看过有关此主题的几篇文章(见下文),似乎主要区别在于创建实例所需的复杂性。在下面的一篇文章中,它说工厂是构造函数的包装器,当工厂创建对象时,所有事情都应该在一行上完成。
问题: 1. 如果创建 HttpClient 需要执行一些额外的步骤(即创建实例、设置一些参数等),我是否违反了工厂模式并应该使用构建器?
类似帖子:
最佳答案
会有很多配置可能性,因此构建器模式最适合您的问题。一步创建时更推荐工厂模式。
请注意,http-client 有一个 HttpClientBuilder 实现: http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html
在内部,您可以混合这两种模式。示例:
new HttpClientBuilder()
.setSomeParameter(MyEnum.VALUE)
.build();
然后在构建具体的 HttpBuilder 时,您可以使用工厂根据 someParameter 值创建一些实例:
public void HttpClient build() {
HttpClient client = ...
SomeAdditionalClass instance = SomeAdditionalClassFactory.create(this.someParameter); // one-step creation
client.setSomeAttribute(instance);
...
return client;
}
关于java - 最佳使用的创意设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35415180/