我发现了这样的代码:
response = Response.status(Status.OK).entity(object.toString()).build();
有人可以向我解释entity(...).build()
对答复的确切作用吗?
答案 0 :(得分:2)
Response
无法直接实例化。它使用 Builder design pattern ,它是23种著名的GoF design patterns之一,描述了如何解决面向对象软件中反复出现的设计问题。
Builder设计模式旨在解决以下问题:
对象创建而不是instantiating objects directly with new
,而是委托给构建者,它使您可以控制构造过程的步骤。
检查类文档中的Response
constructor summary。您会发现一个single protected
constructor,无法直接从您的代码中调用它。
相反,您必须使用Response
static methods之一来获取ResponseBuilder
实例,然后从中获取Response
。
ResponseBuilder
使您可以控制Response
的构建方式,定义状态码,实体,响应头,cookie等。完成后,调用build()
和它将返回一个Response
实例。
让我们看一下每个步骤:
Response.status(Status.OK) // Create a new ResponseBuilder with the supplied status
.entity(object.toString()) // Set the response entity in the builder
.build(); // Create a Response instance from the ResponseBuilder
StringBuilder
类是Builder设计模式用法的另一个著名示例。
答案 1 :(得分:0)
public static Response.ResponseBuilder status(int status)
方法返回ResponseBuilder。使用此构建器,您可以提供Response属性,然后调用build方法来创建Response对象。
您可以在有效的Java 3rd Edition项目2中阅读有关构建器模式的更多信息。