Mục lục
Builder Design Pattern xây dựng một đối tượng phức tạp bằng cách sử dụng nhiều đối tượng đơn giản và sử dụng phương pháp tiếp cận từng bước.
Nếu quá trình xây dựng của chúng ta quá phức tạp, thì hãy sử dụng Builder Design Pattern.
Để hiểu rõ hơn, các bạn hãy cùng mình xem qua ví dụ dưới đây.
Ví dụ 1:
Giả sử chúng ta có một chiếc Laptop, đây là một vật thể phức tạp. Để xây dựng một chiếc laptop, ta cần sử dụng nhiều vật thể nhỏ như: màn hình, ổ cứng, pin, ... .
Vì vậy, nếu sử dụng quá trình trên thì ta có thể tạo ra nhiều chiếc laptop khác nhau với các thiết bị khác nhau. Nhưng vẫn tuân thủ theo cấu trúc của một chiếc máy tính. Chẳng hạn như chiếc laptop này thì có Ram 4gb, chiếc kia có Ram 8gb.
Ví dụ 2:
Giả sử mình cần thiết kế một bài báo cáo tốt nghiệp với hai dạng Word và Power Point. Cả hai bài này đều có cấu trúc từng phần như nhau: Lý do chọn đề tài, phương pháp nghiên cứu, chức năng, ... .
Như vậy ta tách ra làm từng phần nhỏ, sau đó trình bày ở hai dạng báo cáo khác nhau là Word và Power Point mà nội dung vẫn như nhau.
Để tách quá trình xây dựng, Builder Design Pattern xây dựng bao gồm 4 thành phần như sau:
Giải thích sơ đồ:
Trong phần này mình sẽ triển khai Builder Design Pattern trong C# thông qua một ví dụ, cụ thể như sau.
Chúng ta sẽ tạo ra một bản báo cáo với 3 phần nội dung: ReportHeader, ContentReport và ReportFooter. Bản báo cáo sẽ được trình bày dưới hai dạng là Excel và PDF.
Người dùng nhập vào tên dạng báo cáo là gì, thì chương trình sẽ hiển thị ra nội dung của từng phần có trong báo cáo đó. Bây giờ hãy cùng mình thực hiện thôi nào !!!
Bước 1: Tạo class Report bao gồm ReportType, ReportHeader, ContentReport và ReportFooter.
Report.cs
|
Bước 2: Tạo class ReportBuilder
ReportBuilder.cs
|
Bước 3: Bởi vì chúng ta đang xử lý hai dạng báo cáo là Excel và PDF vậy nên cần tạo hai class ExcelReport và PDFReport.
ExcelReport.cs
|
PDFReport.cs
|
Bước 4: Tạo class ReportDirector có một phương thức chung là MakeReport() có tham số đầu vào là ReportBuilder. Sau đó tạo và trả về một báo cáo cụ thể.
ReportDirector.cs
|
Bước 5: Tạo class Client để chạy chương trình và kiểm tra kết quả.
Main
|
Kết quả:
Về bài trước... |
Bài tiếp theo... |
Cờ caro |
Butterfly |
Lật hình (luyện trí nhớ) |
Cờ tướng ONLINE |
Xếp hình |
Ghép hình |
15_PUZZLE |
Kill ghosts |
Banchim |
Planet Defense |
Tower game |
Tower game |
Plapy Bird (NH.Đông) |
Vượt chướng ngại vật |
+ Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!
* Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!
* Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!
+ -:
+ -: