Tôi đã nhìn thấy câu hỏi này tăng lên ở đây và có một vài lần, nhưng tôi không bao giờ tìm thấy và trả lời tôi hài lòng với.Bạn sẽ sử dụng Mô hình Builder ở đâu thay vì Nhà máy Trừu tượng?
Từ Wikipedia:
Builder tập trung vào việc xây dựng một bước đối tượng phức tạp bằng cách bước. Abstract Factory nhấn mạnh một họ các đối tượng sản phẩm (đơn giản hoặc phức tạp). Builder trả về sản phẩm dưới dạng bước cuối cùng, nhưng theo như Nhà máy Trừu tượng có liên quan, sản phẩm sẽ được trả về ngay lập tức.
Nhưng với khách hàng, điều đó cũng không giống nhau? Anh ta nhận được vật thể đầy đủ khi nó được xây dựng, do đó anh ta không có thêm chức năng nào.
Cách duy nhất tôi thấy nó là một cách hoặc tổ chức mã nhà xây dựng theo các bước, để buộc một cấu trúc cho việc triển khai các nhà xây dựng. Đó là tốt đẹp, nhưng hầu như không một bước tiến tuyệt vời từ các nhà máy trừu tượng.
này chút kế tiếp từ Wikipedia là một tài liệu tham khảo tốt để có được quan điểm của tôi:
Thông thường, kiểu dáng bắt đầu bằng cách sử dụng Nhà máy Phương pháp (ít phức tạp hơn, tùy biến nhiều hơn, lớp con sinh sôi nảy nở) và phát triển theo hướng trừu tượng Nhà máy, Prototype hoặc Builder (linh hoạt hơn, phức tạp hơn) khi nhà thiết kế phát hiện ra nơi cần có sự linh hoạt hơn.
Nếu vậy, loại phức tạp nào sẽ được giới thiệu trong hệ thống của bạn nơi bạn sẽ thay đổi từ Nhà máy trừu tượng thành Trình dựng?
Điểm của tôi là tôi không thể tìm thấy và ví dụ rõ ràng rằng một Nhà máy trừu tượng sẽ không đủ và bạn sẽ cần một Builder thay thế.
+1 câu hỏi đầu tiên tuyệt vời Lino! Bạn nên nhảy thường xuyên hơn :-)! – KLE
Cảm ơn, KLE. Nó vẫn còn làm phiền tôi, mặc dù :). Ý tôi là, nếu bạn đang xây dựng các đối tượng tổng hợp, và bạn lấy đạo diễn ra ngoài, truyền trách nhiệm gọi các phương thức xây dựng cho khách hàng, thì nó hoạt động cho tôi. Chỉ sau đó người xây dựng có vẻ hoàn toàn phù hợp. Nhưng với đạo diễn, nó dường như không nhiều ... –
@Lino Chính xác, Trình tạo ** không có đạo diễn **, nó cho phép mỗi khách hàng tạo ra một sản phẩm phức tạp ** theo nhu cầu cụ thể **. Thông thường, không có hai khách hàng nào của một Builder sẽ xây dựng cùng một sản phẩm. Nếu nó là để tạo ra một người xây dựng phức tạp theo cách đóng gói và tái sử dụng (giám đốc), thì bạn có thể có một phương pháp để đóng gói này (và là "giám đốc" của bạn). Ngược lại, đối với ** AbstractFactory **, bạn thường cần một Giám đốc có thể tái sử dụng, ** tạo ra các sản phẩm giống nhau ** (được cung cấp với việc triển khai Nhà máy). – KLE