Nhiều Builder Pattern
ví dụ làm cho Builder
mộ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 Builder
bả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 Builder
bản dựng.
Mặt khác, nếu Builder
là một lớp bên trong, bạn nên biết lớp nào được Builder
xâ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 đó Builder
là 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 String
vì 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 Builder
lớp bên trong là bạn biết lớp đó Builder
là 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 StringBuilder
là một lớp bên trong của String
tô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 Builder
một lớp bên trong hoặc nó chỉ đi xuống theo sở thích và nghi lễ?