intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Design Patterns

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PPT | Số trang:68

173
lượt xem
22
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Design Patterns là một cách tiếp cận dựa mẫu (pattern-based approach) có tác dụng hỗ trợ cho pha thiết kế phần mềm (nguyên do: Chỉ dùng các PP phân tích thiết kế vẫn chưa đủ,...). Và để hiểu rõ hơn về điều này mời các bạn tham khảo bài giảng Design Patterns sau đây.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Design Patterns

  1. Design Patterns
  2. Giới thiệu • Trình bày về “design patterns”[Gam95], một cách tiếp cận dựa mẫu (pattern-based approach) có tác dụng hỗ trợ cho pha thiết kế phần mềm. (Nguyên do: Chỉ dùng các PP phân tích thiết kế vẫn chưa đủ ...) • Liên hệ đến các tiếp cận tương tự: “analysis patterns”, “design heuristics”, “process patterns”, ...
  3. Nội dung 1. Dẫn nhập 2. Tổng quan về mẫu thiết kế GoF 3. Kế thừa và Đa hình: cơ sở cho các mẫu GoF 4. Vài mẫu GoF tiêu biểu và ứng dụng 5. Các tiếp cận tương tự
  4. Dẫn nhập • Xu hướng sử dụng mẫu trong công việc chuyên môn, trong học tập: – Các mẫu, khuôn được dùng trong các ngành công nghiệp khác nhau (in ấn, đúc, ...) – Các bài tập mẫu cho học sinh, sinh viên – Các mẫu chương trình – Các mẫu hướng dẫn thiết kế giao diện với người dùng – ...
  5. Dẫn nhập • Nguồn gốc của mẫu thiết kế phần mềm – Ngôn ngư? mẫu của kiến trúc sư C. Alexander [Alex77]: thiết kế nhà bằng cách lắp ráp các khuôn mẫu có sẵn  Ý tưởng cho việc sưu tầm và sử dụng “các mẫu phần mềm” – Các “idiom” trong lập tr?nh C++ [Cop92]
  6. Dẫn nhập • Thuật ngữ - Các từ: sample, pattern, template,... - “Design patterns”: Patterns in Object- oriented software design - “a design pattern”: an elegant solution to a specific problem in OO software design - Thuật ngữ tiếng Việt...
  7. Định nghĩa • Định nghĩa một mẫu (pattern) nói chung: Một mẫu là một cặp (vấn đề, lời giải) có thể áp dụng trong nhiều tình huống, ngữ cảnh khác nhau. • Mỗi mẫu thường bao gồm các bộ phận sau: – Tên – Nội dung vấn đề – Lời giải (phải đủ tổng quát để có thể dùng trong nhiều tình huống) – Các hệ quả mang lại và ví dụ áp dụng
  8. Tổng quan về mẫu thiết kế GoF • Nguồn gốc lịch sử vàTác giả – Gồm 23 mẫu thiết kế của 4 tác giả: Erich Gamma, Richard Helm, Ralph Johnson, và John Vlissides; – Các mẫu nầy còn được gọi là mẫu GoF (Gang of Four) • “Finding patterns is much easier than describing them”
  9. Tổng quan về mẫu thiết kế GoF • Nguồn gốc lịch sử vàTác giả – Gồm 23 mẫu thiết kế của 4 tác giả: Erich Gamma, Richard Helm, Ralph Johnson, và John Vlissides; – Các mẫu nầy còn được gọi là mẫu GoF (Gang of Four) • “Finding patterns is much easier than describing them”
  10. Tổng quan về mẫu thiết kế GoF • Nguồn gốc lịch sử vàTác giả – Khoảng ½ trong của bộ mẫu nầy có nguồn gốc từ luận án tiến sĩ của Erich Gamma. Các tác giả gặp nhau tại 2 hội ngh? OOPSLA’91 và OOPSLA’92 (Object-Oriented Programming Systems, Languages, and Applications Conference); – Sau đó cùng làm việc để soạn lại một bộ gồm 23 mẫu và trình bày tại hội nghị ECOOP’93 (European Conference on Object-Oriented Programming).
  11. Cấu trúc chung để mô tả mẫu GoF • Tên và Phân loại • Mục đích, ý định: mô tả ngắn gọn về ma?u • Bí danh • Motivation: trình bày một tình huống cụ thể trong thiết kế phần mềm dẫn đến việc sử dụng mẫu này để giải quyết vấn đề. • Khả năng ứng dụng: gợi ý các tình huống trong thiết kế mà có thể ứng dụng mẫu nầy
  12. Cấu trúc chung để mô tả mẫu GoF • Cấu trúc: mô tả mẫu bằng các ký hiệu đồ hình thường dùng trong các phương pháp p.tích/t.kế (ký hiệu OMT, UML, ...) • Các thành viên: trình bày ý nghĩa của các lớp/đối tượng tham gia vào mẫu thiết kế và trách nhiệm của chúng • Sự cộng tác: các thành viên (lớp/đối tượng) của mẫu cộng tác như thế nào để thực hiện trách nhiệm của chúng • Các hệ quả mang lại
  13. Cấu trúc chung để mô tả mẫu GoF • Chú ý liên quan đến việc cài đặt • Mã nguồn minh họa • Nêu ra những ví dụ về các hệ thống thực tế (đã được phát triển và đang chạy) mà có sử dụng mẫu nầy • Các mẫu liên quan: những mẫu nào có liên hệ với mẫu nầy, những điểm quan trọng cần phải phân biệt; mẫu nầy có thể dùng phối hợp với những mẫu nào.
  14. Danh sách 23 mẫu GoF CAÙ C MAÃ U VEÀTAÏO LAÄ P LÔÙ P hay ÑOÁ I TÖÔÏNG Teâ n Muïc ñích Abstract Factory Cung caá p moä t interface cho vieä c taïo laä p caù c ñoái töôïng (coù (Fabrique Abstraite) lieâ n heävôù i nhau) maøkhoâ ng caà n qui ñònh lôù p khi taïo moã i ñoái töôïng Builder Taùch rôø i vieä c xaâ y döïng (construction) moä t ñoái töôïng phöù c (Monter) taïp khoû i bieå u dieã n cuûa noùsao cho cuø ng moä t tieá n trình xaây döïng coùtheåtaïo ñöôïc caù c bieåu dieãn khaù c nhau Factory Method Ñònh nghóa moä t interface ñeåtaïo laä p ñoái töôïng nhöng uû y (Fabrication) nhieä m vieä c instanciation cho caù c lôùp con (caù c lôù p keá thöøa) Prototype Qui ñònh loaïi cuû a caùc ñoá i töôïng caàn taïo baè ng caù ch duø ng moä t ñoái töôïng maã u, taïo môù i nhôøvaø o sao cheù p ñoá i töôïng maã u naà y. Singleton Caøi ñaët lôùp maøchæcoùmoä t theåhieän (ñoá i töôïng) duy nhaá t  
  15. CAÙ C MAÃ U VEÀCAÁ U TRUÙ C LÔÙ P hay ÑOÁ I TÖÔÏNG Teâ n Muïc ñích Adapter Do vaán ñeàtöông thích, thay ñoåi interface cuûa moät lôù p thaø nh moä t (adapteur) interface khaùc phuøhôïp vôù i yeâu caàu ngöôø i söûduïng lôùp. Bridge Taù ch rôøi ngöõnghóa cuû a moä t vaán ñeàkhoû i vieäc caøi ñaë t ; muïc ñích (Pont) ñeåcaûhai boäphaä n (ngöõnghóa vaøcaø i ñaët) coùtheåthay ñoå i ñoä c laä p nhau. Composite Toåchöù c caùc ñoái töôïng theo caá u truùc phaâ n caáp daïng caâ y; Taá t caû caùc ñoái töôïng trong caá u truùc ñöôïc thao taù c theo moät caùch thuaà n nhaá t nhö nhau. Decorator Gaù n theâ m traùch nhieäm cho ñoá i töôïng (môûroäng chöùc naê ng) vaøo (Deùcorateur) luù c chaïy (dynamically). Facade Cung caá p moä t interface thuaà n nhaá t cho moät taä p hôïp caù c (Façade) interface trong moä t “heäthoá ng con” (subsystem). Flyweight Söûduïng vieä c chia seûñeåthao taùc hieä u quaûtreân moä t soálöôïng (Poids mouche) lôù n ñoá i töôïng “côûnhoû” (chaú ng haïn paragraph, doø ng, coät, kyù töï...) Proxy Ñieà u khieå n moät caù ch giaùn tieáp vieäc truy xuaá t moät ñoái töôïng (Procuration) thoâ ng qua moä t ñoái töôïng ñöôïc uûy nhieä m.
  16. CAÙ C MAÃ U VEÀÖÙ NG XÖÛCUÛ A LÔÙ P hay ÑOÁ I TÖÔÏNG (1) Teâ n Muïc ñích Chain of Responsibility Khaé c phuïc vieäc gheù p caë p giöõa boägôû i vaøboänhaä n thoâ ng (Chaìne de ñieäp; Caùc ñoái töôïng nhaä n thoâng ñieä p ñöôïc keá t noá i thaønh responsabiliteùs) moä t chuoãi vaøthoâng ñieä p ñöôïc chuyeå n doïc theo chuoã i naày ñeán khi gaë p ñöôïc ñoá i töôïng xöûlyùnoù . Command Moã i yeâu caà u (thöïc hieä n moä t thao taùc naøo ñoù ) ñöôïc bao (Commande) boïc thaønh moä t ñoái töôïng. Caù c yeâ u caà u seõñöôïc löu tröõvaø gôûi ñi nhö caù c ñoái töôïng. Interpreter Hoãtrôï vieäc ñònh nghóa bieå u dieã n vaên phaïm vaøboäthoâ ng (Interpreteur) dòch cho moä t ngoân ngöõ. Iterator Truy xuaá t caùc phaà n töûcuûa ñoá i töôïng daïng taä p hôïp tuaàn töï (Iteù rateur) (list, array, ...) maøkhoâ ng phuï thuoä c vaø o bieå u dieãn beân trong cuûa caù c phaà n töû. Mediator Ñònh nghóa moä t ñoái töôïng ñeåbao boïc vieäc giao tieá p giöõa (Meù diateur) moä t soáñoái töôïng vôù i nhau. Memento Hieäu chæ nh vaøtraûlaïi nhö cuõtraïng thaù i beân trong cuû a ñoái töôïng maøvaã n khoâ ng vi phaïm vieä c bao boïc döõlieä u.
  17. CAÙ C MAÃ U VEÀÖÙ NG XÖÛCUÛ A LÔÙ P hay ÑOÁ I TÖÔÏNG (2) Teâ n Muïc ñích Observer Ñònh nghóa söï phuï thuoä c moä t-nhieà u giöõ a caù c ñoái töôïng sao cho (Observateur) khi moä t ñoái töôïng thay ñoå i traïng thaù i thì taát caûcaù c ñoá i töôïng phuï thuoäc noùcuõ ng thay ñoå i theo. State Cho pheù p thay ñoå i öùng xöûcuû a ñoái töôïng tuø y theo söï thay ñoå i (Etat) traïng thaùi beân trong cuû a noù . Strategy Bao boïc moä t hoï caùc thuaä t toaù n baèng caù c lôù p ñoá i töôïng ñeåthuaä t (Strateù gie) toaùn coùtheåthay ñoå i ñoäc laäp ñoá i vôùi chöông trình söûduïng thuaä t toaùn. Template Ñònh nghóa phaà n khung cuû a moä t thuaä t toaùn, töùc laømoä t thuaä t toaùn method toå ng quaù t goïi ñeán moä t soáphöông thöù c chöa ñöôïc caø i ñaë t trong (Patron de lôù p cô sôû; vieä c caøi ñaët caùc phöông thöù c ñöôïc uû y nhieä m cho caù c meùthode) lôù p keáthöø a. Visitor Cho pheù p ñònh nghóa theâ m pheù p toaù n môù i taù c ñoä ng leân caù c (Visiteur) phaà n töûcuûa moä t caáu truù c ñoá i töôïng maøkhoâ ng caà n thay ñoå i caùc lôù p ñònh nghóa caá u truùc ñoù .  
  18. Kế thừa, Đa hình: cơ sở cho mẫu GoF Lấy một ví dụ đơn giản Các phương thức virtual : Draw(), Area(), Load(), Input() HINH TRON CHUNHAT TAMGIAC Coù caøi ñaët cuï theå cho  caùc phöông thöùc:  Draw(), Area(), Load(),  Input()
  19. Các phương thức thích hợp sẽ được gọi tùy theo kiểu của đối tượng: HINH  *p; p = new CHUNHAT; p­>Input(); // phương thức Input của CHUNHAT sẽ được gọi. Các thao tác tổng quát trên kiểu HINH không nên có các chỉ thị phụ thuộc  các lớp kế thừa.  void ThaoTac(HINH  *p) {  // chỉ sử dụng phương thức chung. If(p­>Load()) { p­>Input(); p­>Draw(); ... } }  ==> KHÔNG NÊN ép kiểu p, chẳng hạn thành TRON, rồi gọi các  phương thức riêng của lớp TRON.
  20. Vài mẫu GoF tiêu biểu và ứng dụng • Phần nầy sẽ trình bày các mẫu tiêu biểu sau đây: – Composite – Bridge – Template method – Observer • Để ngắn gọn, một vài mục trong 13 mục của cấu trúc mô tả mỗi mẫu sẽ được bỏ qua. Chúng ta sẽ quan tâm nhiều đến ý nghĩa, tình huống cần dùng và ví dụ ứng dụng.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2