方法链接和流畅接口之间的区别



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

Integer.parseInt(str).intValue()

关于流畅接口,对象的每个方法都由一个点链接,而不必与前一种方法相关 这两种技术使修饰符方法返回到主机对象,以便可以在单个表达式中调用多个修饰符,如下所示:

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

这是对的吗?

我认为没有重大区别;或者更确切地说,这两个概念处于不同的层次。方法链接是直接根据不同方法的返回值调用方法的简单方法。

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

Fluent 接口可以通过方法链来实现,但并非所有方法链都是 Fluent 接口。 在 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();

在我看来,如果我们忽略类型系统,流畅的接口与方法链接完全相同。

但是,Fluent 接口更多的是利用返回类型上的类型系统来约束下一个潜在的链接方法候选者。

在具有流畅接口的巧妙设计的DSL中,每个方法调用都会修改返回类型,以便允许接下来链接一小组逻辑上合适的方法(有点像状态机(。因此,控制流在编译时进行验证。

最新更新