Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法链接与fluent接口的区别_Java_Design Patterns_Anti Patterns - Fatal编程技术网

Java 方法链接与fluent接口的区别

Java 方法链接与fluent接口的区别,java,design-patterns,anti-patterns,Java,Design Patterns,Anti Patterns,我想知道方法链接和fluent接口之间的确切区别。 据我所知,方法链接只是运行前面方法返回对象的方法,同时避免临时变量。 这方面的一个例子可能是 Integer.parseInt(str).intValue() 对于fluent接口,对象的每个方法都由一个点链接,而不必与前面的方法关联 这两种技术使修饰符方法返回到宿主对象,因此可以在一个表达式中调用多个修饰符,如下所示: new Car().StartsEngine().OpenWindow() 这是正确的吗?我认为没有什么大的区别;或者说

我想知道方法链接和fluent接口之间的确切区别。 据我所知,方法链接只是运行前面方法返回对象的方法,同时避免临时变量。 这方面的一个例子可能是

Integer.parseInt(str).intValue()
对于fluent接口,对象的每个方法都由一个点链接,而不必与前面的方法关联 这两种技术使修饰符方法返回到宿主对象,因此可以在一个表达式中调用多个修饰符,如下所示:

new Car().StartsEngine().OpenWindow()

这是正确的吗?

我认为没有什么大的区别;或者说,这两个概念处于不同的层次。方法链接是一件简单的事情,您可以直接对另一个方法的返回值调用一个方法


fluent接口是一种设计API的风格,用于执行多步骤、复杂的操作,使其读起来更接近散文。将通过方法链接使用流畅的界面。它可以在每次调用中使用相同的可变对象,也可以每次返回一个新的不可变对象,这取决于接口作者认为什么是好主意。

可以通过方法链接实现流畅接口,但所有方法链接都是流畅接口。 在Fluent接口中,方法链接始终返回所有链接方法使用的相同接口。例如:

public interface Car
{
    Car StartEngine();
    Car OpenWindows();
    Car CloseWindows();
    Car startAC();
}
现在,Fluent接口通过链接实现,如下所示:

Car hondaCity = new HondaCity();
hondaCity.startEngine().openWindows().closeWindows().startAC();
现在是简单的方法链接示例:

Car hondaCity = new HondaCity();
hondaCity.getEngine(). //Get Engine Object
          getFilter(). // get Filter Object
          cleanFilter();
. 还要检查Martin Fowler文章的参考文献。你的意思是不是所有的方法链接都是流畅的接口。