Fluent接口的想法是,可以通过将多个点与点连接起来而将多个属性应用于对象,而不必每次都重新指定对象。构建器模式背后的想法是,与不共享的不可变对象相比,不共享的可变对象通常更易于使用,但是与共享的可变对象相比,推理共享的不可变对象要容易得多。因此,代码可以使用易于使用的可变对象来生成所需实例的“模型”,然后使用该模型来制作易于共享的不可变对象,以保存相同的数据。
这两个想法可以很好地协同工作,但是有些正交。
请注意,至少有三种方法可以使流畅的界面起作用:
- 通过使实例的每个成员返回应用了适当更改的新实例。
- 通过让每个成员改变对其进行调用的实例并返回该实例。
- 通过让每个成员返回轻量级补丁程序对象的实例,该实例包含指向正在修改的事物或先前补丁程序的链接。
最后一种样式要求采取一些措施来应用所有补丁,但是如果要修改的对象很大并且需要进行许多更改,则可以最大程度地减少所需的复制量。



