Есть ли конкретный термин для шаблона Builder, где каждый метод возвращает `this`? - PullRequest
8 голосов
/ 28 мая 2010

Я знаю, что это шаблон Builder, но это его модифицированная форма. Принимая во внимание, что статья Wikipedia по шаблону 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 ]

8 голосов
/ 28 мая 2010

Я видел это под названием Свободный строитель в нескольких местах.

Это имеет большой смысл, поскольку в основном это комбинация Fluent Interface и Builder шаблона проектирования.

3 голосов
/ 28 мая 2010

Я бы назвал технику "метод цепочки".

(в значительной степени в соответствии с wikipedia ...)

И да, метод цепочки можно использовать для создания свободно используемых интерфейсов.

3 голосов
/ 28 мая 2010

Это можно назвать Свободный интерфейс :

В разработке программного обеспечения свободный интерфейс (как впервые придумал Эрик Эванс и Мартин Фаулер) - это способ реализации объектно-ориентированного API таким образом, чтобы обеспечить более читаемый код.

Свободный интерфейс обычно реализуется с использованием цепочки методов для ретрансляции контекста команды последующего вызова (но свободный интерфейс влечет за собой нечто большее, чем просто цепочка методов)

2 голосов
/ 28 мая 2010

В C ++ он вызывается ( хотя бы одним сайтом ) "Идиома именованного параметра".

...