问题标签 [fluent-interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
7596 浏览

java - 如何让 Spring 接受流畅(非 void)的设置器?

我有一个 API,我正在把它变成一个内部 DSL。因此,我的 PoJos 中的大多数方法都返回对 this 的引用,这样我就可以声明式地将方法链接在一起(语法糖)。

我的 API 不依赖于 Spring,但我希望通过对零参数构造函数、getter 和 setter 的 PoJo 友好来使其“对 Spring 友好”。问题是当我有一个非 void 返回类型时,Spring 似乎没有检测到我的 setter 方法。

当将我的命令链接在一起时,返回类型非常方便,所以我不想破坏我的编程 API,只是为了与 Spring 注入兼容。

Spring 中是否有允许我使用非空设置器的设置?

克里斯

0 投票
2 回答
1092 浏览

api - fluent API 与其他 API 有何不同?

我在学习 DSL 时遇到了流利的 API。
我在 fluent API 上进行了很多搜索……我可以得出的基本结论是,流畅的 API 使用方法链接来使代码流畅。
但我无法理解——在面向对象的语言中,我们总是可以创建一个对象并调用与之相关的方法。那么 fluent API 有什么不同呢?流畅的 API 还添加了哪些其他功能?

0 投票
1 回答
623 浏览

ruby - Ruby中的流利界面程序

我们制作了以下代码并尝试运行它。

我们面临的问题是

即使对象不同,也是一样的。我们观察到的是第二个对象,即“a”正在替换第一个对象的值,即“e”。输出结果是

但所需的输出是

谁能建议为什么会这样?它不会替换对象,因为对象 ID 不同..只有对象的值被替换。

0 投票
3 回答
647 浏览

php - PHP OOP:可链接对象?

我试图在 PHP 中找到关于可链接 OOP 对象的一个​​很好的介绍,但还没有任何好的结果。

这样的事情怎么能做到?

甚至:$this->className->add('1','value')->type('string')->doStuff();

非常感谢!

0 投票
1 回答
163 浏览

c# - C# 中的新样式

如今,流畅的 API 非常普遍。最近,我几乎在我使用的每个系统中都能找到它们。大多数情况下,它们增强了可读性,但有时它们将我锁定在不灵活的规范中,使理解他们构建的规范的运行时行为几乎是不可能的。关于如何创建良好的流畅 API 是否存在共识?使用 fluent API 表示结构或规范的最佳方式是什么?

我最近在NServiceBus配置类中的 fluent API 上注意到了这个新颖的变体:

它使用多个接口作为一种线性流畅的接口。我喜欢它,因为当我只尝试表示简单的需求时,它不会给我带来额外的代码和上下文的沉重负担。在简单的情况下就足够了。不过,我不认为它会扩展到复杂的规格。您如何看待接口的这种使用?

您在 C# 中使用了哪些其他新的习语?你在哪里使用它们?他们的优势是什么?你不会在哪里使用它们?另外,您如何衡量您正在考虑使用的成语的优势?

0 投票
3 回答
2320 浏览

jquery - jQuery 方法链接是流畅编程的一个例子吗?

我对 JavaScript/jQuery 有点陌生,但是当我看到方法链接的例子时,我立刻就觉得很熟悉。其他接口(如 LINQ)执行类似的操作,其中一组方法的返回类型与它们操作的类型相同(TweetSharp 执行的操作非常相似)。这是流畅编程的一个例子吗?我读到的关于 jQuery 的大部分内容都说其他库已经“借用”了这种方法链接的想法——这个想法是否起源于 jQuery?

0 投票
5 回答
874 浏览

.net - 与普通的命令式方法调用相比,方法链接有什么优势?

查看来自 Telerik MVC 网格的示例代码:

现在,有什么比这样做更好的呢:

0 投票
1 回答
224 浏览

fluent-nhibernate - 使用 Fluent NHibernate Search 从搜索中排除对象的最佳方法

我有一个带有布尔属性的类。

我想从搜索结果中排除具有错误值的实例。

使用 Fluent NHibernate Search 的最佳方法是什么?

0 投票
2 回答
414 浏览

mocking - 针对方法链接或流畅的接口语法测试替身(模拟/存根)

我有正在测试的代码,基本上看起来像这样(具体代码对问题并不重要。它只是为了解释目的):

这使用方法链接(我正在寻找的解决方案也适用于流利的接口语法)。

我对仅针​​对这个特定示例寻找解决方案不感兴趣,我对解决更普遍的问题感兴趣。在这个例子中,我只想为 CreateCriteria 添加一个期望值。但是,如果我这样做,我会得到一个 NullReferenceException,即使我让 CreateCriteria 返回一个存根,因为 Add 方法返回 null。

我希望我的测试继续工作,即使附加方法被链接,或者 Add 方法被删除。

在使用方法链接时,是否有一个通用技巧可以将测试双打/预期调用的数量降低到我想要断言的那些?

我能想到的一个解决方案是制作一个 T4 模板,它枚举一个类型的所有方法,并创建一个存根,其期望给出不同的默认返回值。但我想知道是否有更简单的选择。

我正在使用 Rhino.Mocks,但一般的解决方案会更受欢迎。

0 投票
10 回答
95073 浏览

php - PHP 方法链还是流利的接口?

我正在使用 PHP 5,并且听说了面向对象方法中的一个新功能,称为“方法链接”。究竟是什么?我该如何实施?