原文链接
Fluent Interface,Matrin Fowler 博客,发表于 2005 年 12 月 20 日。
译文
几个月前我和 Eric Evans 进行了一次讨论会,他谈到一种接口的设计风格,我们称之为流畅接口(Fluent Interface)。它不是一种常见的风格,但我们觉得应该广为人知。描述它的最直观的方式就是例子。
最简单的例子可能就来自 Eric 编写的 TimeAndMoney Library。为了指定一段时间间隔,我们通常这么做:
1 | TimePoint fiveOClock, sixOClock; |
但是 TimeAndMoney 库的使用者会这样做:
1 | TimeInterval meetingTime = fiveOClock.until(sixOClock); |
下面我继续演示“客户下订单”这个例子。一个订单包含多个订单项,每个订单项包含商品项和购买的数量。在提交订单时一个订单项应当是可跳过的,这意味着我更希望在没有此订单项(缺货)的情况下提交订单,而不是推迟提交整个订单。所以这里可以给整个订单一个“急促(rush)”的状态标识。
要实现上述功能,最常见的编码如下: