Nhiều Builder Patternví dụ làm cho Buildermột lớp bên trong của đối tượng mà nó xây dựng.
Điều này có ý nghĩa vì nó chỉ ra những gì các Builderbản dựng. Tuy nhiên, trong một ngôn ngữ gõ tĩnh, chúng ta biết những gì các Builderbản dựng.
Mặt khác, nếu Builderlà một lớp bên trong, bạn nên biết lớp nào được Builderxây dựng mà không cần nhìn vào bên trong Builder.
Ngoài ra, có trình xây dựng như một lớp bên trong làm giảm số lượng nhập khẩu vì nó có thể được tham chiếu bởi lớp bên ngoài - nếu bạn quan tâm đến điều đó.
Và sau đó, có những ví dụ thực tế trong đó Builderlà trong cùng một gói, nhưng không phải là một lớp bên trong, như thế StringBuilder. Bạn biết rằng Builder nên xây dựng một Stringvì nó được đặt tên như vậy.
Điều đó đang được nói, lý do chính đáng duy nhất tôi có thể nghĩ đến để tạo ra một Builderlớp bên trong là bạn biết lớp đó Builderlà gì mà không biết tên của nó hoặc dựa vào các quy ước đặt tên. Ví dụ, nếu StringBuilderlà một lớp bên trong của Stringtôi có lẽ đã biết nó tồn tại sớm hơn tôi (đầu cơ).
Có bất kỳ lý do nào khác để làm cho Buildermột lớp bên trong hoặc nó chỉ đi xuống theo sở thích và nghi lễ?