Чим Builder відрізняється від Chain of Responsibility?
Builder і Chain of Responsibility - це два зовсім різні патерни, хоча обидва використовують покроковий чи послідовний підхід. Різниця - у меті й характері взаємодії об'єктів.
1. Мета
- Builder - керує створенням складного об'єкта з окремих частин. Він збирає продукт крок за кроком, поки не вийде готовий екземпляр.
- Chain of Responsibility (Ланцюжок обов'язків) - керує обробкою запиту: передає його по ланцюжку об'єктів, поки один з них не обробить.
2. Тип взаємодії
- У Builder усі кроки виконуються у певній послідовності, часто під контролем «директора». Кожен крок додає частину майбутнього об'єкта.
- У Chain of Responsibility об'єкти утворюють ланцюжок; кожен може обробити запит або передати далі. Тут взаємодія динамічна й умовна, а не лінійне побудування результату.
3. Контекст застосування
| Критерій | Builder | Chain of Responsibility |
|---|---|---|
| Мета | Створити об'єкт | Обробити запит |
| Результат | Один готовий об'єкт | Потенційно різні обробники |
| Керування | Визначений порядок кроків | Динамічна передача по ланцюжку |
| Зв'язок об'єктів | Білдер і директор | Кілька обробників у ланцюзі |
4. Приклад
Builder:
Збирає Car: двигун -> колеса -> інтер'єр -> build().
Chain of Responsibility: Обробляє запит користувача: логер -> авторизація -> валідація -> контролер, поки хтось не завершить ланцюжок.
5. Висновок
- Builder - про конструювання (створення продукту).
- Chain of Responsibility - про делегування (передачу запиту).
Builder відповідає на питання «Як покроково створити?», Chain of Responsibility - «Хто обробить?».
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.