是否有一个Builder模式的特定术语,每个方法都返回`this`?

时间:2010-05-28 15:02:50

标签: design-patterns

我知道这是Builder模式,但它是它的修改形式。关于Builder模式的维基百科文章给出了例子:

pizzaBuilder.createNewPizzaProduct();
pizzaBuilder.buildDough();
pizzaBuilder.buildSauce();
pizzaBuilder.buildTopping();
Pizza p = pizzaBuilder.getPizza();

修改后的Builder模式是否有特定名称,如下所示:

Pizza p = pizzaBuilder.createNewPizzaProduct().buildDough().buildSauce().buildTopping();

这在jQuery库中最为明显,您可以在其中执行以下操作:

$('li.item-a').parent().css('background-color', 'red');

其中每个方法(包括初始$())返回一个jQuery对象,该对象通常表示一组页面元素,并且每个方法都以某种方式对该集合进行操作。

4 个答案:

答案 0 :(得分:8)

我见过这个名为 Fluent Builder 的几个地方。

这很有道理,因为它基本上是Fluent InterfaceBuilder设计模式的组合。

答案 1 :(得分:3)

它可以称为Fluent interface

  

在软件工程中,流畅的界面(首先由Eric Evans和Martin Fowler创造)是一种实现面向对象API的方式,旨在提供更易读的代码。

     

流畅的接口通常通过使用方法链来中继后续调用的指令上下文来实现(但是流畅的接口不仅仅需要方法链接)

答案 2 :(得分:3)

我会称之为“方法链接”的技术。

(非常符合wikipedia ...)

是的,方法链可用于构建流畅的接口。

答案 3 :(得分:2)

在C ++中,它被称为(at least by one site)“命名参数成语”。