công nghệ phần mềm nguyễn văn hiệp chương11 các mẫu thiết kế che dau hành vi, thuật giải trongoi tuong (behavioral patterns) sinhvienzone com

22 33 0
công nghệ phần mềm nguyễn văn hiệp chương11 các mẫu thiết kế che dau hành vi, thuật giải trongoi tuong (behavioral patterns) sinhvienzone com

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 11 Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng (Behavioral Patterns) ne C om 11.1 Tổng quát nhóm mẫu “Behavioral Patterns” 11.2 Mẫu Chain of Responsibility 11.3 Mẫu Template Method 11.4 Mẫu Strategy 11.5 Mẫu State 11.6 Mẫu Command 11.7 Mẫu Observer 11.8 Kết chương Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Trong ₫oạn code giải vấn ₫ề ứng dụng, cần phải chọn lựa nhiều thuật giải/hành vi khác ta thường dùng phát biểu if/switch sau : Switch (acode) { case ALG1 : //₫oạn code miêu tả thuật giải/hành vi case ALG2 : //₫oạn code miêu tả thuật giải/hành vi … case ALGn : //₫oạn code miêu tả thuật giải/hành vi n } Đoạn code có nhiều khuyết ₫iểm : ohu5 thuộc hoàn toàn vào số lượng thuật giải/hành vi, vào chi tiết cụ thể thuật giải/hành vi, phải hiệu chỉnh số lượng/chi tiết thuật giải/hành vi bị thay ₫ổi Si nh ‰ Vi 11.1 Tổng quát nhóm mẫu “Behavioral Patterns” ‰ Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide https://fb.com/sinhvienzonevn 11.1 Tổng quát nhóm mẫu “Behavioral Patterns” ‰ ne C om ‰ Để khắc phục nhược ₫iểm cách lập trình cổ ₫iển slide trước, cách tốt dùng mẫu thuộc nhóm “Behavioral Patterns” Nhiệm vụ mẫu thuộc nhóm “” che dấu ₫oạn code miêu tả thuật giải/hành vi vào ₫ối tượng, code client giữ tham khảo ₫ến ₫ối tượng gởi thông ₫iệp nhờ ₫ối tượng thực thuật giải/hành vi cụ thể cần thiết Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mẫu dây chuyền trách nhiệm (Chain of Responsibility) giúp tránh ₫ược việc gắn kết cứng phần tử gởi request (Client) với phần tử nhận xử lý request (Server) cách cho phép ₫ối tượng có hội xử lý request ₫ó Các ₫ối tượng nhận xử lý request ₫ược liên kết lại thành dây chuyền, Client tham khảo ₫ến ₫ầu dây chuyền ₫ể gởi request có yêu cầu Si ƒ nh Mục tiêu : Vi 11.2 Mẫu Chain of Responsibility Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập mơn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide https://fb.com/sinhvienzonevn 11.2 Mẫu Chain of Responsibility Thí dụ việc dùng mẫu Chain of Responsibility : Trong ứng dụng có trợ giúp theo ngữ cảnh user xem thông tin trợ giúp phần tử giao diện ₫ó trực tiếp từ phần tử ₫ó cách ấn phải chuột vào Lưu ý ₫ối tượng giao diện thường ₫ược tổ chức theo dạng thứ bậc : chương trình có nhiều cửa sổ giao diện, cửa sổ giao diện chứa nhiều ₫ối tượng giao diện, ₫ối tượng giao diện group chứa nhiều ₫ối tượng giao diện con… Tóm lại số lượng ₫ối tượng giao diện ₫ơn (khơng chứa ₫ối tượng khác nữa) chương trình thường lớn, chi phí thực tất trợ giúp cho tất ₫ối tượng ₫ơn lớn, ₫ó thường ₫ược thực từ từ thông qua nhiều version ₫ạt ₫ược hồn chỉnh Tuy nhiên, góc nhìn user, version ₫ầu tiên, chương trình phải ₫áp ứng tốt yêu cầu trợ giúp theo ngữ cảnh ₫ối tượng giao diện ne C om ƒ Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.2 Mẫu Chain of Responsibility Si nh Cách tốt ₫ể giải vần ₫ề dùng mẫu Chain of Responsibility với lược ₫ồ class sau : Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide https://fb.com/sinhvienzonevn 11.2 Mẫu Chain of Responsibility ne C om Lược ₫ồ ₫ối tượng liên quan ₫ến button ₫ó có dạng sau : Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.2 Mẫu Chain of Responsibility Si nh Theo lược ₫ồ ₫ối tượng Button user ấn phải chuột vào button ₫ể xem trợ giúp button ₫ó : ƒ Hoặc hàm xử lý HandleHelp() button ₫ó chạy (nếu có thực) ₫ể hiển thị nội dung trợ giúp xác button ₫ó ƒ Hoặc hàm xử lý HandleHelp() ₫ối tượng chứa button chạy (GroupBox - có thực) ₫ể hiển thị nội dung trợ giúp phần tử GroupBox ₫ó, nội dung thường chứa thông tin trợ giúp button ƒ Tương tự, GroupBox khơng thực hàm xử lý HandleHelp() hàm HandleHelp() Form chạy, Form khơng thực hàm xử lý HandleHelp() cuối hàm xử lý HandleHelp() chương trình chạy Trong trường hợp user xem ₫ược nội dung trợ giúp tồn phần mềm, ₫ó có thơng tin sử dụng button mà họ cần Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide https://fb.com/sinhvienzonevn 11.2 Mẫu Chain of Responsibility ne C om Ta xây dựng mẫu Chain of Responsibility theo loại object pattern với lược ₫ồ class sau : Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.2 Mẫu Chain of Responsibility Si nh Các phần tử tham gia : ƒ IService (IHelpHandler) : ₫ịnh nghĩa interface tác vụ xử lý request ƒ AbstractService (Widget) : ₫ặc tả thành phần dùng chung cho tất ₫ối tượng xử lý request, thí dụ thuộc tính tham khảo ₫ến ₫ối tượng ₫i sau dây chuyền xử lý, thực tác vụ request() với nhiệm vụ gọi tác vụ ₫ối tượng mà tham khảo trực tiếp ƒ ConcreteService1… (Button…) : thực tác vụ request() theo yêu cầu riêng theo ý tưởng chung sau : xử lý ₫ược request, xử lý, khơng gởi tiếp request cho ₫ối tượng ₫i sau giải ƒ Client : chứa tham khảo ₫ến ₫ối tượng ₫ầu tiên dây chuyền ₫ể lần cần thực request, gởi thơng ₫iệp tới ₫ối tượng Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 10 https://fb.com/sinhvienzonevn 11.3 Mẫu Template Method Mục tiêu : Định nghĩa giải thuật tổng quát ₫ể giải vấn ₫ề ₫ó tác vụ, giải thuật tổng quát có gọi số tác vụ chức ₫ó ₫ể thực công việc theo yêu cầu giải thuật tổng quát, nhiên tác vụ ₫ược gọi ₫ược thực sau class con, class hành chưa biết chúng làm cụ thể ƒ Như ₫ã trình bày nhiều lần tài liệu này, mục tiêu việc viết chương trình phải viết ₫ược ₫oạn code giải ₫úng chức có tính tổng quát hóa cao ₫ể hạn chế tối ₫a việc hiệu chỉnh lại Mẫu Template Method biện pháp hỗ trợ mục tiêu ne C om ƒ Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 11 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.3 Mẫu Template Method Giả sử ta muốn viết chương trình quản lý hệ thống file (FileManagerApp) cho phép user thực thực số tác vụ xử lý hệ thống file xóa file ₫ệ qui từ thư mục xác ₫ịnh; ₫ếm số lượng file con, cháu, chắt…của thư mục; tìm diệt virus tất file từ thư mục xác ₫ịnh… Si ƒ nh Thí dụ việc dùng mẫu Template Method : ƒ Phân tích chức chương trình xử lý hệ thống file ta phát số ý tưởng sau : Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 12 https://fb.com/sinhvienzonevn 11.3 Mẫu Template Method Thí dụ việc dùng mẫu Template Method : Mỗi chức cần form giao diện với user, may mắn form giao diện phục vụ chức ₫ều giống số lượng tính chất phần tử giao diện Cụ thể form cần chứa ₫ối tượng giao diện : Button ₫ể giúp user duyệt chọn thư mục xuất phát, TextBox ₫ể hiển thị ₫ường dẫn thư mục xuất phát, TextBox ₫ể giúp user ₫ặc tả pattern phần tử cần xử lý (*, *.exe,…), Button ₫ể user kích hoạt việc thực chức năng, ListBox ₫ể hiển thị thông tin kết xử lý… ne C om ƒ Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 13 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.3 Mẫu Template Method Si nh Thí dụ việc dùng mẫu Template Method : ƒ Mỗi chức cần phải duyệt ₫ệ qui hệ thống file, bắt ₫ầu từ thư mục ₫ịnh user, ₫ể gặp file thực hoạt ₫ộng xử lý xác ₫ịnh file ₫ó Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 14 https://fb.com/sinhvienzonevn 11.3 Mẫu Template Method ne C om Cách tốt ₫ể xây dựng chương trình dùng mẫu Template Method với lược ₫ồ class sau : Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 15 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.3 Mẫu Template Method Si nh Class FileCommandDlg ₫ặc tả form giao diện tổng quát cho chức năng, có tác vụ miêu tả giải thuật tổng quát ₫ược dùng chung cho class con, ta gọi tác vụ “template method” : ƒ FileCommandDlg() chứa giải thuật tạo form, tạo ₫ối tượng form thêm chúng vào form vị trí kích thước mong muốn Lệnh cuối giải thuật tạo form tổng quát gọi hàm initForm() ₫ể hiệu chỉnh nội dung chuỗi văn ₫ược hiển thị kèm theo phần tử giao diện cho phù hợp với chức ₫ặc thù ƒ Lưu ý mơi trường lập trình trực quan Visual Studio Net, người lập trình dùng tiện ích thiết kế trực quan form giao diện cho dễ dàng, nhanh chóng, xác Máy tự ₫ộng sinh mã cho tác vụ tạo form theo ₫úng yêu cầu thiết kế user Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập mơn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 16 https://fb.com/sinhvienzonevn 11.3 Mẫu Template Method ƒ om ƒ C ƒ btnBrowse_Click() hàm xử lý kiện Click chuột button Browse user, có nhiệm vụ chung hiển thị cửa sổ duyệt chọn thư mục xuất phát btnStart_Click() hàm xử lý kiện Click chuột button Start user, có nhiệm vụ chung thực chức thư mục xuất phát Giải thuật tác vụ gồm bước công việc : prolog() → browseTree() → epilog() browseTree() chứa giải thuật duyệt file cách ₫ệ qui, xuất phát từ thư mục xuất phát user ₫ịnh, lần gặp file gọi tác vụ action() thực hành vi ₫ó lên file Các tác vụ initForm(), prolog(), action(), epilog() ₫ược dùng giải thuật tác vụ template method ₫ược class ₫ặc tả cụ thể theo yêu cầu chức ₫ặc thù class ₫ó Ta gọi tác vụ “primitive function” ne ƒ Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 17 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.3 Mẫu Template Method Si nh Ta xây dựng mẫu Template Method theo loại class pattern với lược ₫ồ class sau Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 18 https://fb.com/sinhvienzonevn 11.3 Mẫu Template Method Các phần tử tham gia : ITemplate (Form) : ₫ịnh nghĩa interface thống class chức cần dùng, interface thường chứa nhiều tác vụ chức có tính chất chung sau : ₫ể thực chức ta dùng giải thuật tổng quát Như tác vụ chức interface thường “template method” ƒ AbstractClass (FileCommandDlg) : ₫ặc tả class cha dùng chung, class chứa tác vụ “template method”, tác vụ “template method” miêu tả giải thuật tổng quát ₫ể thực chức tương ứng, giải thuật tổng quát có gọi hàm “primitive function” ne C om ƒ Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 19 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.3 Mẫu Template Method ConcreteClass1… (RecursiveFilesDelDlg…) : class con, class chịu trách nhiệm override hàm “primitive function” theo yêu cầu xử lý ₫ặc thù Các class không cần không ₫ược phép override tác vụ “template method” ₫ã ₫ược ₫ặc tả lần class cha Si ƒ nh Các phần tử tham gia (tt) : ƒ Client (FileManagerApp) : miêu tả ₫oạn code client sử dụng chức khác Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 20 https://fb.com/sinhvienzonevn 11.4 Mẫu Strategy ne C om Mục tiêu : ƒ Cung cấp họ giải thuật khác ₫ể giải vấn ₫ề ₫ó cho phép Client chọn lựa linh ₫ộng dễ dàng giải thuật cụ thể theo tình sử dụng ƒ Về nguyên lý chung, thường có nhiều giải thuật khác giải ₫ược tốn Mỗi giải thuật có ưu khuyết ₫iểm riêng thích hợp ngữ cảnh sử dụng ₫ó so với giải thuật lại Cách tốt ₫ể giúp Client chọn lựa linh ₫ộng dễ dàng giải thuật phù hợp theo tình dùng mẫu Strategy Mơn : Nhập mơn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 21 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.4 Mẫu Strategy Si nh Thí dụ việc dùng mẫu Strategy : ƒ Thí dụ ₫ể xếp thứ tự phần tử danh sách, ta có nhiều giải thuật xếp khác tuần tự, bubblesort, nhị phân,… Cách tốt ₫ể thiết lập linh ₫ộng giải thuật xếp cho danh sách giúp code tác vụ chức ₫ối tượng danh sách hoàn toàn ₫ộc lập với giải thuật xếp thứ tự dùng mẫu Strategy với lược ₫ồ class sau : ƒ Đối tượng danh sách có tham khảo ₫ến ₫ối tượng thực xếp thứ tự phần tử, tùy yêu cầu cụ thể, ta tạo ₫ối tượng chứa giải thuật xếp mong muốn gán tham khảo ₫ến ₫ối tượng vào thuộc tính tham khảo ₫ối tượng danh sách Mỗi lần cần xếp thứ tự phần tử danh sách mình, gởi thơng ₫iệp sStart.sort(this) ₫ể kích hoạt tác vụ xếp thứ tự khơng biết xác giải thuật xếp chạy Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 22 https://fb.com/sinhvienzonevn ne C om 11.4 Mẫu Strategy Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 23 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.4 Mẫu Strategy Si nh Ta xây dựng mẫu Strategy theo loại object pattern với lược ₫ồ class sau : Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập mơn Cơng nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 24 https://fb.com/sinhvienzonevn 11.4 Mẫu Strategy Các phần tử tham gia : IStrategy (ISortStrategy) : ₫ịnh nghĩa interface cho tất class thể giải thuật thực chức xác ₫ịnh ₫ó ƒ Strategy1… (BinarySort…) : class miêu tả giải thuật cụ thể ₫ể giải chức Nó thường nhận tham khảo ₫ến Client (₫ối tượng Subject) lúc ₫ược khởi tạo ₫ể thông qua tham khảo này, truy xuất liệu Client hầu phục vụ giải thuật chức ƒ Subject (List) : class ₫ặc tả Client có sử dụng giải thuật class Strategy thực ne C om ƒ Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 25 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.5 Mẫu State Si nh Mục tiêu : ƒ Về nguyên lý chung, hành vi ₫ối tượng phụ thuộc vào trạng thái hành ₫ối tượng ₫ó Cách tốt ₫ể giúp ₫ối tượng thay ₫ổi linh ₫ộng dễ dàng hành vi phù hợp theo trạng thái dùng mẫu State ƒ Cho phép ₫ối tượng thay ₫ổi hành vi trạng thái bên thay ₫ổi Ta có cảm giác class ₫ối tượng bị thay ₫ổi Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 26 https://fb.com/sinhvienzonevn 11.5 Mẫu State ne C om Thí dụ việc dùng mẫu State : ƒ Thí dụ class TCPConnection miêu tả mối nối mạng, ₫ối tượng TCPConnection nhiều trạng thái : Established, Listening, Closed Khi ₫ối tượng TCPConnection nhận request ₫ó, ₫áp ứng khác tùy vào trạng thái hành Cách tốt ₫ể giải yêu cầu dùng mẫu State theo lược ₫ồ class sau ₫ây : Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 27 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.5 Mẫu State state nh TCPConnection Open() Close() Acknowledge() ITCPState Si Open() Close() Acknowledge() state->Open(); TCPEstablished Open() Close() Acknowledge() Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com TCPListen TCPClosed Open() Close() Acknowledge() Open() Close() Acknowledge() Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 28 https://fb.com/sinhvienzonevn 11.5 Mẫu State Ta xây dựng mẫu State theo loại object pattern với lược ₫ồ class sau : state Context IState Request() om Handle() state->Handle(); ConcreteStateA C ConcreteStateB Handle() ConcreteStateC Handle() ne Handle() Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 29 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.5 Mẫu State Context (TCPConnection) : ₫ịnh nghĩa interface cần dùng cho client Duy trì tham khảo ₫ến ₫ối tượng class ConcreteState mà ₫ịnh nghĩa trạng thái hành Si ƒ nh Các phần tử tham gia : ƒ IState (ITCPState) : ₫ịnh nghĩa interface nhằm bao ₫óng hành vi kết hợp với trạng thái cụ thể Duy trì tham khảo ₫ến ₫ối tượng class ConcreteState mà ₫ịnh nghĩa trạng thái hành ƒ ConcreteState (TCPEstablished, TCPListen, TCPClose) : ₫ịnh nghĩa che dấu hành vi cụ thể kết hợp với trạng thái Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập mơn Cơng nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 30 https://fb.com/sinhvienzonevn 11.6 Mẫu Command ne C om Mục tiêu : ƒ Đóng gói ₫oạn code phục vụ yêu cầu xác ₫ịnh Client ₫ối tượng, nhờ ₫ó thơng số hóa ₫oạn code nhận thực thao tác request xếp, ghi logfile, undo,… Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 31 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.6 Mẫu Command Si nh Thí dụ việc dùng mẫu Command : ƒ Chương trình có giao diện ₫ồ họa trực quan thường dùng nhiều cửa sổ giao diện, cửa sổ thường có menubar chứa nhiều menu dạng pop-up, menu pop-up chứa nhiều mục chức năng, mục chức menu pop-up con… Cuối mục chức ₫ược dùng ₫ể kích hoạt chức tương ứng Yêu cầu phổ biến menubar cửa sổ chức ₫ược hiệu chỉnh ₫ộng theo thời gian (thêm/bớt/thay ₫ổi thành phần menu), chí muốn thay ₫ổi hành vi ₫áp ứng với mục chức có menubar Cách tốt ₫ể giải vấn ₫ề dùng mẫu Command với lược ₫ồ class sau : Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 32 https://fb.com/sinhvienzonevn ne C om 11.6 Mẫu Command Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 33 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si ƒ Mỗi ₫oạn code thực chức ₫ó ₫ược ₫ặt tác vụ execute() class tương ứng, class ₫ều hỗ trợ interface thống ICommand Mỗi ₫ối tượng giao diện (Button, mục chức menu popup,…) chứa tham khảo ₫ến ₫ối tượng ICommand, hàm xử lý kiện Click chuột ln ₫ược viết sau : cmd.execute(); Lệnh kích hoạt tác vụ execute() ₫ối tượng ₫ược tham khảo hành chạy, ₫ối tượng ₫ược tham khảo là tùy theo hành vi cụ thể cần thực nh ƒ Vi 11.6 Mẫu Command Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 34 https://fb.com/sinhvienzonevn 11.6 Mẫu Command ne C om Ta xây dựng mẫu Command theo loại object pattern với lược ₫ồ class sau : Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 35 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.6 Mẫu Command Si nh Các phần tử tham gia : ƒ ICommand : interface thống cho ₫ối tượng xử lý request, chứa tác vụ execute() ₫ể thực hành vi ₫ược yêu cầu từ client ƒ Command1… (PasteCommand, OpenCommand…) : class ₫ặc tả giải thuật thực hành vi cụ thể, thường có thuộc tính tham khảo ₫ến ₫ối tượng Receiver chứa liệu tác vụ chức có liên quan ƒ Invoker (MenuItem): ₫ối tượng gửi request ₫ến ₫ối tượng ICommand ₫ể nhờ thực hành vi tương ứng ƒ Client (Application) : module khởi tạo ₫ối tượng Command cụ thể gởi cho tham khảo ₫ến ₫ối tượng Receiver ƒ Receiver (Document, Application) : chứa liệu tác vụ chức có liên quan ₫ến hành vi mà ₫ối tượng Command cần thực Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập mơn Cơng nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 36 https://fb.com/sinhvienzonevn 11.7 Mẫu Observer ne C om Mục tiêu : ƒ Định nghĩa phụ thuộc 1-n ₫ối tượng cho ₫ối tượng trung tâm bị thay ₫ổi nội dung (trạng thái) n ₫ối tượng phụ thuộc ₫ược cảnh báo hầu hiệu chỉnh tự ₫ộng theo ₫ồi tượng trung tâm, nhờ ₫ó ₫ảm bảo ₫ược tính quán chúng ƒ Thường ₫ối tượng trung tâm ₫ối tượng chứa liệu bên ứng dụng, n ₫ối tượng phụ thuộc ₫ối tượng giao diện ứng dụng Nội dung ₫ối tượng giao diện ₫ược chứa quản lý ₫ối tượng bên ứng dụng Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 37 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.7 Mẫu Observer Si nh Thí dụ việc dùng mẫu Observer : ƒ Trong ứng dụng quản lý bảng tính (MSExcel), bảng tính bảng liệu database tương ứng (ta gọi workbook hay file *.xls) Ta hiển thị nội dung bảng liệu nhiều ₫ối tượng giao diện khác nhau, thí dụ spreadsheet (bảng nội dung chi tiết chiều), barchart (biểu ₫ồ vạch), piechart (biểu ₫ồ bánh), ƒ Mỗi bảng liệu bên phần mềm thay ₫ổi nội dung ₫ó (có thể phần mềm khác), phải gởi cảnh báo (notify) ₫ến ₫ối tượng giao diện có dùng nội dung ₫ể ₫ối tượng kịp thời hiển thị lại nội dung Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Mơn : Nhập mơn Cơng nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 38 https://fb.com/sinhvienzonevn 11.7 Mẫu Observer ne C om Thí dụ việc dùng mẫu Observer : ƒ Tương tự, ₫ối tượng giao diện cho phép người dùng cập nhật nội dung (spreadsheet), user cập nhật nội dung, khơng ₫ược cập nhật cục mà phải gởi yêu cầu cập nhật nội dung ₫ối tượng trung tâm, có ₫ối tượng có quyền ₫ịnh cập nhật hay khơng, cập nhật nội dung nội dung bị thay ₫ổi phải gởi cảnh báo cho ₫ối tượng phụ thuộc biết ƒ Cách tốt ₫ể giải vấn ₫ế dùng mẫu thiết kế Observer với lược ₫ồ class sau : Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 39 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si nh Vi 11.7 Mẫu Observer Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 40 https://fb.com/sinhvienzonevn 11.7 Mẫu Observer ne C om Ta xây dựng mẫu Observer theo loại object pattern với lược ₫ồ class sau : Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 41 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 11.7 Mẫu Observer Si nh Các phần tử tham gia : ƒ IObservable : interface ₫ối tượng trung tâm (₫óng vai trò mối quan hệ 1-n), chứa tác vụ attach, detach ₫ối tượng phụ thuộc vào danh sách quản lý; tác vụ notify() gởi cảnh báo cho ₫ối tượng phụ thuộc có thay ₫ổi nội dung; tác vụ updateData() nhận yêu cầu thay ₫ổi nội dung xử lý yêu cầu ƒ Observable (WorksheetData) : class ₫ặc tả ₫ối tượng trung tâm, thực interface IObservable ƒ IObserver : interface thống ₫ối tượng phụ thuộc vào ₫ối tượng trung tâm ƒ Observer1… (PieChart…) : class ₫ặc tả ₫ối tượng phụ thuộc cụ thể Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 42 https://fb.com/sinhvienzonevn 11.8 Kết chương Chương ₫ã giới thiệu thông tin nhóm mẫu phục vụ che dấu hành vi, thuật giải ₫ối tượng (Behavioral Patterns) thông tin chi tiết cụ thể mẫu Chain of Responsibility, Template Method, Strategy, State, Command, Observer ne C om ‰ Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 43 Si nh Vi en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com https://fb.com/sinhvienzonevn ... © 2010 SinhVienZone. com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 24 https://fb .com/ sinhvienzonevn 11.4 Mẫu Strategy Các phần tử... Tp.HCM © 2010 SinhVienZone. com Mơn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 32 https://fb .com/ sinhvienzonevn ne C om 11.6 Mẫu Command Môn... Môn : Nhập môn Công nghệ phần mềm Chương 11 : Các mẫu thiết kế che dấu hành vi, thuật giải ₫ối tượng Slide 34 https://fb .com/ sinhvienzonevn 11.6 Mẫu Command ne C om Ta xây dựng mẫu Command theo

Ngày đăng: 30/01/2020, 22:37

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan