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

Design Pattern

Chia sẻ: Khach Venduong | Ngày: | Loại File: PPT | Số trang:63

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

Design Patterns (ISBN 0201633612) là cuốn sách khoa học máy tính đưa ra các giải pháp chuẩn và các qui ước đặt tên cho các vấn đề chung trong thiết kế phần mềm. Các tác giả của cuốn sách là Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides, hay còn được biết đến với các tên "Gang of Four" hay đơn giản là "GoF". Nửa đầu cuốn sách nói về các định nghĩa của các thiết kế mẫu cho phần mềm và phần còn lại đưa ra một danh sách các mẫu thiết kế thực tiễn có thể dùng lại....

Chủ đề:
Lưu

Nội dung Text: Design Pattern

  1. CHƯƠNG 8: CH Design Pattern Design 1
  2. ̣ Nôi dung Nôi là gi? ̀ Coupling Cohesion là gi? ̀ Pattern là gi? ̀ GRASP là gi? ̀ 2
  3. Coupling là gì? Coupling là 1 cách để đo lừơng xem Coupling 1 phần tử khi được kết nối thì nó có khả năng “hiểu biết” đến mức nào hay hoàn toàn phụ thuộc vào các phần tử khác. Phần tử có thể là class, subsystem, system… Một phần tử có coupling thấp (low coupling) nghĩa là nó không phụ thuộc nhiêu vào các phần tử khác. ̀ 3
  4. Coupling là gì? Coupling Một lớp có coupling cao sẽ phụ thuộc vào nhiều lớp khác. Các lớp này là không nên dùng vì: ◦ Những thay đổi trong các lớp có liên quan sẽ làm cho lớp nay cũng bị thay đổi theo ̀ ◦ Khó hiểu khi chúng bị cô lập ◦ Khó dùng lại vì nó đòi hỏi sự hiện diện cua 1 số lớp mà nó phụ thuộc vào ̉ 4
  5. Cohesion là gì? Cohesion đề cập đến sự tương tác Coupling giữa các đối tượng thì cohesion đề cập đến sự tương tác bên trong 1 đối tượng. Cohesion là 1 cách đo lường để xem các nhiêm vụ của 1 phần tử có ̣ quan hệ chặt chẽ với nhau như thế nào? Một phần tử có trách nhiệm tương đối cao, và không phải làm quá nhiều việc được xem là có cohesion cao (high cohesion) 5
  6. Cohesion là gì? Cohesion Một lớp có low cohesion khi nó làm nhiều việc không liên quan nhau hay làm quá nhiều việc. Những lớp này là không nên dùng vì: ◦ Khó hiểu ◦ Khó dùng lại ◦ Khó bảo trì ◦ Dễ bị ảnh hưởng bởi các thay đổi Các lớp có cohesion thấp thường biểu diễn cho việc trừu tượng ở mức quá lớn, hay nhận những nhiệm vụ mà lẽ ra phải giao lại cho các đôi tượng khác thực hiện ́ . 6
  7. Cohesion là gì? Cohesion cohesion: là method chỉ đảm nhiệm Method 1 chức năng hay 1 nhiệm vụ. Thông thường cách đặt tên của nó cũng ngầm nói lên chức năng, ví dụ method chon_nha_cung_cap(), Tinh_tong() Class cohesion: các thuộc tính và method của lớp phải có mức độ cohesion cao, nghĩa là chúng phải được dùng bởi chính các method trong class hay chỉ chứa các method phục vụ cho mục đích chính của class 7
  8. Các mức độ cohesion Các Very low cohesion: một class phải tự 1. mình làm nhiều việc trong những miền chức năng hoàn toàn khác nhau. Ví dụ: môt lớp vừa có có nhiệm vụ ̣ tương tác với database quan hệ vừa quản lý các lệnh gọi thủ tục từ xa. Những nhiệm vụ này thuộc 2 vùng chức năng khác nhau, nên lớp nay ̀ có very low cohesion. 8
  9. Các mức độ cohesion Các Low cohesion: class có nhiệm vụ phải tự 2. mình thực hiện 1 công việc phức tạp trong 1 vùng chức năng. Ví dụ: môt lớp có nhiệm vụ tương tác với ̣ database quan hệ. Các method của lớp đều có liên quan với nhau nhưng lớp này có quá nhiều method để đảm đương nhiệm vụ Nên chia lơp nay thành 1 họ các lớp cùng ́ ̀ chia xẻ nhau công việc truy xuất database. 9
  10. Các mức độ cohesion Các cohesion: lơp có nhiệm vụ vừa ́ High phải (moderate responsibilities) trong cùng 1 vùng chức năng và hợp tác với các lớp khác để hoàn thành nhiệm v ụ. Ví dụ: lớp RDBInterface chỉ có 1 phần nhiệm vụ trong việc tương tác với database. Nó tương tác với hàng tá các lơp khác để khôi phục và lưu trữ ́ dữ liệu. 10
  11. Quy luật Cohesion và Quy Coupling kém thì thường sinh ra Cohesion coupling kém và ngược lại. Cohesion và couling được ví như âm và duơng (yin and yang) của software engineering 11
  12. Các lợi ích của high cohesion Các cho việc thiết kế rõ ràng và dễ Làm hiểu hơn. Việc bảo trì và mở rộng cũng đơn giản hơn. Low coupling thường đuợc hỗ trợ. 12
  13. Pattern là gi? ̀ Pattern thưc tế có rât nhiêu lược đồ ̣ ́ ̀ Trong class có câu truc giông nhau. Pattern ́ ́ ́ được xem như là giai phap hay cach ̉ ́ ́ thưc để giai quyêt bai toan. ́ ̉ ́ ̀ ́ Khai niêm về pattern trong thiêt kế ́ ̣ ́ phân mêm đuợc vay mượn từ nganh ̀ ̀ ̀ kiên truc xây dựng nơi mà cac pattern ́ ́ ́ trợ giup rât nhiêu cho cac kiên truc sư ́ ́ ̀ ́ ́ ́ khi lam viêc với cac câu truc phức tap ̀ ̣ ́ ́ ́ ̣ 13
  14. Pattern là gi? ̀ Pattern ̣ pattern khi được ap dung vao1 ́ ̣ ̀ Môt ngữ canh mới sẽ đưa ra cac khuyên ̉ ́ ́ cao (recommendation) lam thế nao để ́ ̀ ̀ ap dung và hoa hợp nó vao tinh ́ ̣ ̀ ̀̀ huông mới ́  “A pattern is a named problem/ solution pair that can be applied in new context, with advice on how to apply it in novel situations and discussion of its trade-offs” 14
  15. GRASP GRASP GRASP (General Responsibility Assignment Software Patterns) bao gôm nhiêu pattern mô tả cac nguyên ̀ ̀ ́ tăc cơ ban trong viêc thiêt kế đôi tượng ́ ̉ ̣ ́ ́ và gan nhiêm vụ cho đôi tượng. ́ ̣ ́ Hiêu và ap dung cac nguyên tăc ̉ ́ ̣ ́ ́ GRASP trong quá trinh tao lược đồ ̀ ̣ tương tac là rât quan trong giup thiêt kế ́ ́ ̣ ́ ́ thanh công phân mêm hướng đôi ̀ ̀ ̀ ́ tượng. 15
  16. GRASP GRASP hinh thiêt kế có thể chứa hang trăm ̀ ́ ̀ Mô hay hang ngan cac lớp phân mêm, và 1 ̀ ̀ ́ ̀ ̀ ứng dung có thể yêu câu hang trăm hay ̣ ̀ ̀ hang ngan cac nhiêm vụ cân phai hoan ̀ ̀ ́ ̣ ̀ ̉ ̀ ̀ thanh. Khi thiêt kế đôi tượng, cân chon lựa ́ ́ ̀ ̣ xem nhiêm vụ nên gan cho đôi tượng ̣ ́ ́ nao là phù hợp hơn. Nêu gan hợp ly, hệ ̀ ́ ́ ́ thông sẽ trở nên dễ hiêu, dễ bao trì và ́ ̉ ̉ mở rông. ̣ 16
  17. GRASP GRASP Có ́ ̀ ̣ ̣ ̀ rât nhiêu pattern thuôc loai nay nhưng 5 pattern cơ ban nhât : ̉ ́ 1. Information Expert 2. Creator 3. High Cohesion 4. Low Coupling 5. Controller 17
  18. Information Expert (or Expert) Information Solution: Assign a responsibility to  the information expert - the class that has the information necessary to fulfill the responsibility. Problem: What is a general principle of assigning responsibilities to objects? ̣ tăt pattern nay là IE ́ ̀ Goi 18
  19. Case study 1: Lơp nao biêt tông trị ́ ̀ ́̉ Case giá ́ có môt số lớp cân biêt tông trị giá ̣ ̀ ́̉ Nêu cua 1 lân ban. Câu hoi đăt ra là lớp ̉ ̀ ́ ̉ ̣ nao có nhiêm vụ cho biêt tông trị giá ̀ ̣ ́̉ ̣̀ ́ môt lân ban. Theo IE cân tim xem có lớp nao chứa ̀̀ ̀ thông tin cân thiêt để xac đinh tông số ̀ ́ ́ ̣ ̉ hay không? Chung ta nên tim cac lớp ́ ̀ ́ ̀ ̀ trong mô hinh domain hay mô hinh ́ ́ thiêt kê. 19
  20. Case study 1: Lơp nao biêt tông trị ́ ̀ ́̉ Case giá Trước hêt tim cac lớp thich hợp trong ́̀ ́ ́ 1. ̀ ́ ́ mô hinh thiêt kê. 2. Nêu không tim thây, thì tim cac lớp ́ ̀ ́ ̀ ́ trong mô hinh domain và cố sử dung ̀ ̣ cac lớp trong mô hinh domain để tao ́ ̀ ̣ lâp cac lớp tương ứng trong mô hinh ̣ ́ ̀ ́ ́ thiêt kê. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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