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