方法链是如何工作的?
How does method chaining work?
在下面的示例中,getRequestDispatcher("xxx")
是如何从 getServletContext()
调用的?像这样的调用程序通常如何工作?请给我一个关于这个上下文的清晰图片。
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
dispatcher.include(request, response);
getServletContext()
returns 一个 ServletContext
对象,它有一个名为 getRequestDispatcher()
的方法。您的代码行只是 shorthand 两个方法调用,相当于此代码:
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
一般来说,method chaining is a good practice achieving fluent接口灵活。
一般来说...要实现它,您只需执行您的代码和 return 当前对象。例如,在 Java:
public Criterios<T> setOrdem(String campo, String direcao) {
getOrdenacao().set(campo, direcao);
return this;
}
public Criterios<T> setOrdem(String campo) {
return setOrdem(campo, Ordenacao.Direcao.ASC);
}
public final Criterios<T> setPagina(int pagina) {
getPaginacao().setPagina(pagina);
return this;
}
public final Criterios<T> setQuantidade(int quantidade) {
getPaginacao().setQuantidade(quantidade);
return this;
}
返回当前对象会一遍又一遍地提供相同的 API...但是,通过每次迭代,对象都会按顺序逐步更改。
在下面的示例中,getRequestDispatcher("xxx")
是如何从 getServletContext()
调用的?像这样的调用程序通常如何工作?请给我一个关于这个上下文的清晰图片。
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
dispatcher.include(request, response);
getServletContext()
returns 一个 ServletContext
对象,它有一个名为 getRequestDispatcher()
的方法。您的代码行只是 shorthand 两个方法调用,相当于此代码:
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
一般来说,method chaining is a good practice achieving fluent接口灵活。 一般来说...要实现它,您只需执行您的代码和 return 当前对象。例如,在 Java:
public Criterios<T> setOrdem(String campo, String direcao) {
getOrdenacao().set(campo, direcao);
return this;
}
public Criterios<T> setOrdem(String campo) {
return setOrdem(campo, Ordenacao.Direcao.ASC);
}
public final Criterios<T> setPagina(int pagina) {
getPaginacao().setPagina(pagina);
return this;
}
public final Criterios<T> setQuantidade(int quantidade) {
getPaginacao().setQuantidade(quantidade);
return this;
}
返回当前对象会一遍又一遍地提供相同的 API...但是,通过每次迭代,对象都会按顺序逐步更改。