[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
Đăng nhận xét