我在研究DSL时遇到了流畅的API
我在流畅的API上搜索了很多...我能得出的基本结论是,流畅的API使用方法链接以使代码流畅。
但我无法理解 - 在面向对象语言中,我们总是可以创建一个对象,并可以调用与之相关的方法。那么流畅的API如何与众不同?流畅的API还添加了哪些其他功能?
答案 0 :(得分:1)
使用流畅的接口,您可以编写返回调用该方法的对象的方法(通常是 self 或 this )并处理传统的返回值作为状态更改那个对象。如果你看一些使用流畅接口的Javascript库,它可以更容易地处理列表和空值,因为它们可以像处理单个对象一样处理。流畅的接口的缺点是它们倾向于创建具有一大堆责任的单片神对象。
我不希望它们在任何地方被使用(因为上帝对象问题),但它们不时很好。
答案 1 :(得分:1)
您的问题已在原始Fluent Interface blog post by Martin Fowler中得到解答。关键在于流畅API的流畅性来自领域特定语言的领域,而不仅仅是方法链。