Bài giảng Các mẫu thiết kế hướng đối tượng - Chương 6: Các mẫu thiết kế phục vụ tổ chức cấu trúc các đối tượng (Structural Patterns)

Chương 6  
Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối  
tượng (Structural Patterns)  
6.1 Tổng quát về mẫu thiết kế HĐT  
6.2 Mẫu Adapter  
6.3 Mẫu Composite  
6.4 Mẫu Proxy  
6.5 Mẫu Decorator  
6.6 Mẫu Facade  
6.7 Mẫu Flyweight  
6.8 Kết chương  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 1  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Trong việc phát triển 1 phần mềm, ta thường thực hiện các hoạt  
₫ộng chức năng sau ₫ây :  
1. Nắm bắt yêu cầu phần mềm  
2. Phân tích từng chức năng  
3. Thiết kế  
4. Hiện thực (hay viết code)  
6. Kiểm thử  
Các hoạt ₫ộng trên có mối quan hệ phụ thuộc nhau, cụ thể kết  
quả của bước i là dữ liệu ₫ầu vào của bước thứ i+1. Do ₫ó nếu  
bước thứ i có lỗi, nghĩa là kết quả của nó không ₫úng thì sẽ kéo  
theo các bước sau ₫ó sẽ bị lỗi cho dù ta cố gắng thực hiện chúng  
tốt cách gì ₫i nữa.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 2  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Như vậy, lỗi ở bước ₫ầu tiên là nguy hại nhất, kế ₫ó là lỗi ở bước  
thức 2, thứ 3, ... Tuy nhiên, các bước nắm bắt yêu cầu và phân  
tích chức năng thường chỉ tạo ra kết quả ít, chưa có ₫ộ phức tạp  
cao, do ₫ó ta vẫn có cách kiểm soát ₫ể những kết quả này ít có lỗi  
nhất. Còn bắt ₫ầu từ bước thiết kế trở ₫i, kết quả sẽ nhiều và có  
₫ộ phức tạp cao hơn nên sẽ khó kiểm soát hơn. Và nếu có lỗi ở  
bước này thì rất ngộng hiện thực  
không có ý nghĩa gì nữa.  
Tóm lại, thiết kế phần mềm là một vấn ₫ề rất khó khăn, nhất là khi  
phần mềm lớn, mối quan hệ giữa các phần tử sẽ nhiều và phức  
tạp, bản thiết kế thường không hiệu quả và chứa nhiều lỗi khó  
chúng ảnh hưởng nặng nề ₫ến các giai ₫oạn sau như viết code,  
kiểm thử….  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 3  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Dùng phương pháp thiết kế hướng ₫ối tượng sẽ giúp ta có thể thiết  
kế ₫ược phần mềm có cấu trúc rõ ràng, mạch lạc, nhờ ₫ó ta dễ  
phát hiện lỗi nếu có, dễ hiệu chỉnh, dễ nâng cấp từng thành phần  
(thí dụ nhờ tính bao ₫óng, bao gộp, thừa kế, ₫a xạ, tổng quát  
hóa…).  
Tuy nhiên việc thiết kế phần mềm HĐT còn phụ thuộc nhiều vào  
khả năng người th₫ều tạo ₫ược  
những kết quả tích cực như ₫ã nêu trên.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 4  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Hiện nay, hoạt ₫ộng thiết kế phần mềm là phải ₫ạt ₫ược 3 miêu  
tiêu chính sau ₫ây (trong nhiều mục tiêu khác) :  
. Mục tiêu 1 : thiết kế ₫ược phần mềm giải quyết ₫úng các chức  
năng mà user yêu cầu. Đây là mục tiêu chính yếu nhất.  
. Mục tiêu 2 : phải hạn chế ₫ược việc tái thiết kế lại trong tương  
lai, cho dù vì lý do gì.  
. Mục tiêu 3 : bản thiết kế hiện hành phải hỗ trợ tốt nhất việc tái  
thiết kế lại nếu vì lý do gì ₫ó phải tái thiết kế lại phần mềm.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 5  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Có nhiều nguyên nhân dẫn ₫ến tái thiết kế phần mềm (PM) :  
. Do PM phụ thuộc vào phần cứng, hệ ₫iều hành (OS) hay PM khác  
: PM càng dùng trực tiếp các thông số phần cứng hay PM liên  
quan sẽ phải thay ₫ổi khi các thông số này thay ₫ổi.  
. Do PM phụ thuộc vào giải thuật : khi PM có nhiều giải pháp, nhiều  
mức ₫ộ xử lý cho cùng một vấn ₫ề, việc ràng buộc chặt chẽ PM  
với giải pháp cụ thể sẽ dẫn ₫ến khó bổ sung, thay ₫ổi PM.  
. Do PM chưa có tính tổng quát hóa. Thí dụ tiện ích gỏ phím tiếng  
phải thiết kế lại PM gỏ phím.  
. Các thành phần của PM liên quan nhau quá chặt chẽ : hiệu chỉnh,  
nâng cấp 1 thành phần thường phải thay ₫ổi các thành phần phụ  
thuộc trực tiếp và gián tiếp nó theo kiểu dây chuyền.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 6  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 7  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Một biện pháp ₫ược ₫ề xuất ₫ể có những bản thiết kế tốt, hạn chế  
₫ược việc tái thiết kế lại và khi cần thiết kế lại, nó phải hỗ trợ tốt  
nhất việc tái thiết kế là sử dụng lại những mẫu thiết kế hướng ₫ối  
tượng (Object Oriented Design Patterns), hay gọi tắt là mẫu thiết  
kế (Design Patterns).  
Vậy mẫu thiết kế là gì ? Mẫu thiết kế có các ₫ặc ₫iểm sau :  
. Là bản thiết kế của những người chuyên nghiệp và nổi tiếng,  
₫ã ₫ược sử dụng trong các phần mềm ₫ang ₫ược dùng phổ  
biến và ₫ược người dùng ₫ánh giá tốt.  
. Giúp giải quyết 1 trong những vấn ₫ề thiết kế thường gặp trong  
các phần mềm.  
hiệu chỉnh và dễ nâng cấp.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 8  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Vai trò của mẫu thiết kế : mẫu thiết kế ₫óng 1 số vai trò chính yếu  
như sau :  
. Cung cấp phương pháp giải quyết những vấn ₫ề thực tế  
thường gặp trong phần mềm mà mọi người ₫ã ₫ánh giá, kiểm  
nghiệm là rất tốt.  
. Là biện pháp tái sử dụng tri thức các chuyên gia phần mềm.  
. Hình thành kho o tiếp giữa những  
người làm phần mềm.  
. Giúp ta tìm hiểu ₫ể nắm vững hơn ₫ặc ₫iểm ngôn ngữ lập trình  
hướng ₫ối tượng.  
Hơn nữa PM tạo ₫ược sẽ có ₫ộ tin cậy, uyển chuyển cao, dễ dàng  
hiệu chỉnh và nâng cấp sau này khi cần thiết.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 9  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Phân loại các mẫu thiết kế : Dựa vào công dụng, ta có thể phân các  
mẫu thiết kế thành 3 nhóm chính :  
. Structural (nhóm mẫu cấu trúc) : các mẫu này cung cấp cơ chế  
₫ể quản lý cấu trúc và mối quan hệ giữa các class, thí dụ ₫ể  
dùng lại các class có sẵn (class thư viện, class của bên thứ ba  
- third party,…), ₫ể tạo mối ràng buộc thấp nhất giữa các class  
(lower couplinghừa kế khác.  
. Creational (nhóm mẫu phục vụ khởi tạo ₫ối tượng) : giúp khắc  
phục các vấn ₫ề về khởi tạo ₫ối tượng, nhất là ₫ối tượng lớn và  
cấp thấp.  
che dấu sự hiện thực của ₫ối tượng, che dấu giải thuật, hỗ trợ  
việc thay ₫ổi cấu hình ₫ối tượng một cách linh.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 10  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Phân loại các mẫu thiết kế : Còn nếu dựa vào loại phần tử ₫ược  
dùng trong mẫu, ta có thể phân các mẫu thiết kế thành 2 nhóm  
chính :  
. Class patterns : nhóm mẫu thiết kế chỉ sử dụng các class và  
mối quan hệ tĩnh giữa các class như thừa kế, hiện thực. Các  
mối quan hệ này ₫ược xác ₫ịnh tại thời ₫iểm dịch, do ₫ó class  
patterns thích hng không cần thay  
₫ổi ₫ộng trong thời gian chạy.  
. Object patterns : nhóm mẫu thiết kế có dùng mối quan hệ giữa  
các ₫ối tượng, mối quan hệ này rất ₫ộng vì dễ dàng thay ₫ổi  
bất kỳ lúc nào trong lúc phần mềm chạy  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 11  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.1 Tổng quát về mẫu thiết kế HĐT  
Trong phần còn lại của chương này, chúng ta sẽ giới thiệu 1 số  
mẫu thiết kế có tần suất sử dụng lại trong các ứng dụng cao nhất,  
mỗi mẫu thiết kế ta sẽ miêu tả các thông tin như :  
. Tên gốc tiếng Anh của mẫu  
. Mục tiêu của mẫu  
. Thí dụ về sử dụng mẫu  
. Lược ₫ồ class miêu tả mẫu : chứa các phần tử (class, ₫ối  
tượng) trong mẫu và mối quan hệ giữa chúng.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 12  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Mục tiêu :  
. Chuyển ₫ổi interface của một class chức năng có sẵn thành  
một interface khác theo yêu cầu sử dụng của phần tử sử dụng  
class ₫ó (ta gọi phần tử sử dụng là Client).  
. Thật vậy, trong lập trình ₫ôi khi có những tình huống mà chúng  
ta cần dùng một class có sẵn nhưng thông qua 1 interface  
khác chứ không muốn thông qua interface của chính class ₫ó.  
Mẫu Adapter giúp chúng ta giải quyết vấn ₫ề này  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 13  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Thí dụ về việc dùng mẫu Adapter :  
. Ta muốn viết chương trình soạn thảo ₫ồ họa (DrawingEditor) cho  
phép user vẽ các ₫ối tượng ₫ồ họa như Line, Rectangle, Ellipse,  
Polygon, Text... Code quản lý các ₫ối tượng ₫ồ họa (ta gọi là  
Client) xử lý chúng thông qua interface thống nhất là  
IDrawingShape. Hiện thực các class Line, Rectangle, Ellipse,  
Polygon từ ₫ầu khá dễ vì chúng là những ₫ối tượng ₫ơn giản  
nhưng hiện thực class Text thì phức tạp hơn (giả sử class này có  
khả năng hiển thị nội dung chuỗi trên nhiều dòng và có ₫ịnh dạng  
phong phú). Giả sử chúng ta ₫ang lập trình trên platform có cung  
dụng của nó là ITextView không giống với interface IDrawingShap  
của chương trình.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 14  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Thí dụ về việc dùng mẫu Adapter :  
. Việc thay ₫ổi interface IDrawingShape của chương trình thành  
ITextView là không thể ₫ược vì ảnh hưởng ₫ến các class ₫ối tượng  
₫ồ họa khác ₫ã viết. Việc hiệu chỉnh lại class TextView ₫ể hỗ trợ  
interface IDrawingShape của chương trình cũng không khả thi vì  
TextView ₫ã ₫ược sử dụng bởi nhiều ứng dụng khác, hệ thống  
không thể thay ₫ổi tùy tiện interface sử dụng của nó ₫ược.  
. Cách tốt nhất ₫ể chương trình DrawingEditor của chúng ta có thể  
chẳng cần thay ₫ổi mã nguồn của ứng dụng là dùng mẫu Adapter,  
cụ thể ₫ịnh nghĩa class TextShape như là phần tử ₫ại diện cho  
TextView, nó sẽ cung cấp ₫úng interface sử dụng mà chương trình  
cần. Chúng ta sẽ thấy chi phí ₫ịnh nghĩa class TextShape là rất  
thấp và ₫ộc lập với ₫ộ phức tạp của class TextView.  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 15  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Lược ₫ồ class miêu tả mẫu Adapter thể hiện cách thức chương trình  
DrawingEditor sử dụng class TextView như sau :  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 16  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Lược ₫ồ class miêu tả mẫu Adapter thể hiện cách thức chương trình  
DrawingEditor sử dụng class TextView như sau :  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 17  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Lược ₫ồ class miêu tả mẫu Adapter dạng class pattern :  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 18  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Lược ₫ồ class miêu tả mẫu Adapter dạng class pattern :  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 19  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
6.2 Mẫu Adapter  
Lược ₫ồ class miêu tả mẫu Adapter dạng object pattern :  
Môn : Các mẫu thiết kế hướng ₫ối tượng  
Chương 6 : Các mẫu thiết kế phục vụ tổ chức cấu trúc các ₫ối tượng  
Slide 20  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Tải về để xem bản đầy đủ
pdf 62 trang yennguyen 20300 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Các mẫu thiết kế hướng đối tượng - Chương 6: Các mẫu thiết kế phục vụ tổ chức cấu trúc các đối tượng (Structural Patterns)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_cac_mau_thiet_ke_huong_doi_tuong_chuong_6_cac_mau.pdf