[Nhóm Creational] Mẫu Builder



Mẫu BUILDER

I. Khái niệm
Mẫu builder dùng để chia một công việc khởi tạo phức tạp của một đối tượng ra riêng rẽ từ đó có thể tiến hành khởi tạo đối tượng ở các hoàn cảnh khác nhau.


Trong đó :
Builder: định nghĩa một lớp trừu tượng cho việc tạo ra các thành phần của một đối tượng sản phẩm Product.
ConcreteBuilder: là lớp con kế thừa từ lớp Builder để override lại hàm tạo từng phần của một sản phẩm, lắp ráp các phần vào sản phẩm, nó sẽ chứa biến sản phẩm bên trong nó, đồng thời đưa ra một hàm để xuất sản phẩm.
Product: là sản phẩm bao gồm nhiều phần cấu thành nên.
Director: là nơi gọi xây dựng các phần để tạo ra một Product thông qua biến Builder

II. Tần suất sử dụng
Trung bình thấp

III. Ví dụ tình huống
Trong những ứng dụng lớn, với nhiều các chức năng phức tạp và mô hình giao diện đồ sộ. Việc khởi tạo ứng dụng thường gặp nhiều khó khăn. Chúng ta không thể dồn tất cả công việc khởi tạo này cho một hàm khởi tạo. Vì như thế sẽ rất khó kiểm soát hết, và hơn nữa không phải lúc nào các thành phần của ứng dụng cũng được khởi tạo một cách  đồng bộ. Có thành phần  được tạo ra vào lúc dịch chương trình nhưng cũng có thành phần tuỳ theo từng yêu cầu của người dùng, tuỳ vào hoàn cảnh của ứng dụng, mà nó sẽ được tạo ra. Do vậy người ta giao công việc này cho một đối tượng chịu trách nhiêm khởi tạo, và chia việc khởi tạo ứng dụng riêng rẽ, để có thể tiến hành khởi tạo riêng biệt ở các hoàn cảnh khác nhau.

Hãy tưởng tượng việc tạo ra đối tượng của ta  giống như như việc chúng ta tạo ra chiếc xe đạp. Đầu tiên ta tạo ra khung xe, sau đó tạo ra bánh xe, chúng ta tạo ra buđông xe, xích, líp,.. Việc tạo ra các bộ phận này không nhất thiết phải đựơc thực hiện một cách đồng thời hay theo một trật tự nào cả, và nó có thể được tạo ra một cách độc lập bởi nhiều người. Nhưng trong một mô hình sản xuất như vậy, bao giờ việc tạo ra chiếc xe cũng được khép kín để tạo ra chiếc xe hoàn chỉnh, đó là nhà máy sản xuất xe đạp. Ta gọi đối tượng nhà máy sản xuất xe đạp này là builder (người xây dựng).
Ta có hình sau:

IV. Đút kết kinh nghiệm
Khi gặp các bài toán có dạng sau ta nên dùng mẫu Builder trong việc tạo lập:
- Một sản phẩm có nhiều thành phần bên trong lắp ghép để tạo thành.
- Một lớp gồm nhiều hàm tạo từng thành phần bên trong.



Nguồn: LMinh

Nhận xét

Bài đăng phổ biến từ blog này

Property trong Objective-C

Quản lý bộ nhớ trong Objective-C

Optional trong Swift