gpt4 book ai didi

java - 最佳使用的创意设计模式

转载 作者:行者123 更新时间:2023-12-01 06:10:44 25 4
gpt4 key购买 nike

我正在编写一些需要抽象 HttpClient 创建的代码。 Http 客户端将是 org.apache.http.client.HttpClient 的实例。 Http 客户端的配置将根据配置信息(即是否是 post/get 请求、基本身份验证、可能是一些 header 等)而有所不同。

为了实现这一点,我正在考虑使用工厂设计模式,它将抽象 Http 客户端的创建;但是,我想知道构建器模式是否是更好的选择。

我已经看过有关此主题的几篇文章(见下文),似乎主要区别在于创建实例所需的复杂性。在下面的一篇文章中,它说工厂是构造函数的包装器,当工厂创建对象时,所有事情都应该在一行上完成。

问题:1. 如果创建 HttpClient 需要执行一些额外的步骤(即创建实例、设置一些参数等),我是否违反了工厂模式并应该使用构建器?

类似帖子:

  1. What is the difference between Builder Design pattern and Factory Design pattern?

  2. https://myjavalatte.wordpress.com/tag/builder-pattern-vs-factory-pattern/

  3. Difference between Abstract factory and builder?

最佳答案

会有很多配置可能性,因此构建器模式最适合您的问题。一步创建时更推荐工厂模式。

请注意,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/

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