Khái niệm:
Tách biệt phần constrcution của một đối tượng phức tạp khỏi phần representation của nó để các tiến trình constrcution giống nhau có thể tạo ra các representation khác nhau.
Mức độ sử dụng: thấp
UML Class Diagram:
Những lớp và/hoặc đối tượng trong mẫu thiết kế này:
- Builder (VehicleBuilder): định nghĩa một abstract interface để tạo ra các phần của một đối tượng Product.
- ConcreteBuilder (MotorCycleBuilder, CarBuilder, ScooterBuilder):
+ xây dựng và gom các phần của product bằng cách thực thi Builder interface.
+ khai báo và theo dõi phần representation mà nó tạo ra.
+ đưa ra một interface để lấy product.
- Director (Shop): xây dựng một đối tượng bằng việc sử dụng Builder interface.
- Product (Vehicle):
+ đại diện cho đối tượng phức tạp đang được xây dựng. ConcreteBuilder xây dựng phần representation bên trong của product và định nghĩa tiến trình mà nó đã ráp được.
+ bao gồm các lớp định nghĩa các phần hợp lệ, bao gồm các interface để ráp các phần với nhau cho ra kết quả cuối củng.
Builder: khi nào sử dụng và dùng ở đâu
Mẫu thiết kế Builder là một mẫu thiết kế tạo lập cho phép client xây dựng một đối tượng phức tạp bằng cách chỉ cần định nghĩa kiểu và nội dung. Chi tiết phần dựng được ẩn đi hoàn toàn bên phía client. Động cơ phổ biến nhất cho việc sử dụng Builder là đơn giản hóa phần code của client trong việc tạo ra các đối tượng phức tạp. Client vẫn có thể điều khiển các bước được thực hiện bởi Builder mà không cần biết công việc thực sự được thực hiện như thế nào. Builder thường đóng gói construction của các đối tượng Composite (một mẫu thiết kế khác) vì các procedure liên quan thường lặp đi lặ lại và phức tạp.
Một trường hợp nơi Builder có thể có ích khi xây dựng một bộ tạo code. Giả sử bạn đang viết một ứng dụng viết các stored procedure cho các CSDL khác nhau (SQL Server, Oracle, DB2). Đầu ra thực sự thì rất khác nhau nhưng những bước khác nhau của việc tạo các procedure tách biệt thực thi các trạng thai CRUD (Create, Read, Update, Delete) là tương tự nhau.
Builder là một mẫu thiết kế tạo lập tương tự như các mẫu Factory. Tuy nhiên, Builder cho bạn nhiều sự kiểm soát hơn trong từng bước trong tiến trình xây dựng có thể được tùy chỉnh; các mẫu Factory tạo ra các đối tượng trong 1 bước duy nhất.
Demo: