Багато Builder Pattern
прикладів робить цеBuilder
робиться внутрішній клас об'єкта, який він будує.
Це має певний сенс, оскільки вказує на те, що Builder
будується. Однак зі статистично набраною мовою ми знаємо, що такеBuilder
будується.
З іншого боку, якщо Builder
це внутрішній клас, ви повинні знати, який клас Builder
будує, не заглядаючи всередину Builder
.
Крім того, наявність будівельника як внутрішнього класу зменшує кількість імпорту, оскільки на нього може посилатися зовнішній клас - якщо вам це важливо.
А потім є практичні приклади, коли Builder
в одному пакеті, але не внутрішній клас, як StringBuilder
. Ви знаєте, що Builder
слід будувати, String
тому що він названий так.
Однак, я можу подумати про створення Builder
внутрішнього класу - це те, що ви знаєте, що таке клас, Builder
не знаючи його назви і не покладаючись на умовні позначення. Наприклад, якщо StringBuilder
це був внутрішній клас оString
я, мабуть, знав би, що він існував раніше, ніж я (спекулятивний).
Чи є якісь інші причини зробити Builder
внутрішній клас чи це просто зводиться до уподобань та ритуалів?