Skip to main content

Чим Builder відрізняється від Chain of Responsibility?

Builder і Chain of Responsibility - це два зовсім різні патерни, хоча обидва використовують покроковий чи послідовний підхід. Різниця - у меті й характері взаємодії об'єктів.


1. Мета

  • Builder - керує створенням складного об'єкта з окремих частин. Він збирає продукт крок за кроком, поки не вийде готовий екземпляр.
  • Chain of Responsibility (Ланцюжок обов'язків) - керує обробкою запиту: передає його по ланцюжку об'єктів, поки один з них не обробить.

2. Тип взаємодії

  • У Builder усі кроки виконуються у певній послідовності, часто під контролем «директора». Кожен крок додає частину майбутнього об'єкта.
  • У Chain of Responsibility об'єкти утворюють ланцюжок; кожен може обробити запит або передати далі. Тут взаємодія динамічна й умовна, а не лінійне побудування результату.

3. Контекст застосування

КритерійBuilderChain of Responsibility
МетаСтворити об'єктОбробити запит
РезультатОдин готовий об'єктПотенційно різні обробники
КеруванняВизначений порядок кроківДинамічна передача по ланцюжку
Зв'язок об'єктівБілдер і директорКілька обробників у ланцюзі

4. Приклад

Builder: Збирає Car: двигун -> колеса -> інтер'єр -> build().

Chain of Responsibility: Обробляє запит користувача: логер -> авторизація -> валідація -> контролер, поки хтось не завершить ланцюжок.


5. Висновок

  • Builder - про конструювання (створення продукту).
  • Chain of Responsibility - про делегування (передачу запиту).

Builder відповідає на питання «Як покроково створити?», Chain of Responsibility - «Хто обробить?».

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.