Bài giảng Phân tích & Thiết kế hướng đối tượng - Chương 5: Các mẫu thiết kế phục vụ khởi tạo đối tượng (Creational Patterns)

Chương 5  
Các mẫu thiết kế phục vụ khởi tạo ₫ối tượng  
(Creational Patterns)  
5.1 Tổng quát về nhóm mẫu “Creational”  
5.2 Mẫu Abstract Factory  
5.3 Mẫu Factory Method  
5.4 Mẫu Prototype  
5.5 Mẫu Builder  
5.6 Mẫu Singleton  
5.7 Kết chương  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.1 Tổng quát về nhóm mẫu “Creational”  
‰ Đối tượng thường chứa nhiều thuộc tính dữ liệu và nhiều tham  
khảo ₫ến các ₫ối tượng khác. Đoạn code khởi tạo giá trị cho các  
thuộc tính và tham khảo này phụ thuộc hoàn toàn vào sự hiện  
thực cụ thể của ₫ối tượng. Chúng ta cần tách ₫oạn code này khỏi  
code của client sử dụng ₫ối tượng.  
‰ Thường client muốn tạo ₫ối tượng phức hợp mà không cần quan  
tâm ₫ến các thông tin cụ thể chi tiết sau :  
ƒ Đối tượng phức hợp thuộc class cụ thể nào.  
ƒ Nó chứa các loại ₫ối tượng con nào, số lượng ra sao.  
ƒ Mối quan hệ giữa các ₫ối tượng con như thế nào.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.1 Tổng quát về nhóm mẫu “Creational”  
‰ Các mẫu thiết kế “Creational” sẽ giúp code client linh ₫ộng về mặt  
khởi tạo, quản lý và sử dụng ₫ối tượng. Chúng có thể cho phép  
client chủ ₫ộng trong việc xác ₫ịnh ₫ối tượng nào ₫ược tạo ra, ai  
tạo ra ₫ối tượng ₫ó, cách thức và thời ₫iểm khởi tạo ₫ối tượng ₫ó.  
‰ Đặc ₫iểm nổi bật của các mẫu thiết kế “creational” là ₫oạn code  
client cần sử dụng ₫ối tượng không trực tiếp sinh ra ₫ối tượng mà  
nhờ các phần tử trung gian ₫ể tăng ₫ộ linh ₫ộng, tối thiểu hóa sự  
phụ thuộc vào các class ₫ối tượng cụ thể.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.2 Mẫu Abstract Factory  
Mục tiêu :  
ƒ Cung cấp cho Client 1 interface gồm tập tác vụ khởi tạo các  
₫ối tượng ₫ược dùng trong Client nhưng che dấu mọi chi tiết về  
₫ối tượng ₫ược tạo ra, thí dụ như thuộc class cụ thể nào…  
ƒ Một trong các mục tiêu của việc viết code ứng dụng là phải có  
tính tổng quát cao và ₫ộ ₫ộc lập cao với chi tiết hiện thực của  
các ₫ối tượng mà nó dùng. Một trong các phương án ₫ể ₫ạt  
₫ược mục tiêu trên là không dùng lệnh new ₫ể tạo ra ₫ối tượng  
cần dùng vì nếu dùng lệnh new thì phải xác ₫ịnh tên class cụ  
thể và như vậy sẽ phụ thuộc vào class này. Mẫu  
AbstractFactory sẽ giúp chúng ta tạo ₫ối tượng mà không cần  
biết tên class cụ thể ₫ược dùng.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.2 Mẫu Abstract Factory  
Thí dụ về việc dùng mẫu Abstract factory :  
ƒ Ta muốn viết chương trình GUI (dùng giao diện ₫ồ họa trực quan)  
có khả năng chạy trên nhiều platform khác nhau (chương trình  
multi-platform). Mỗi platform có một họ các class miêu tả các ₫ối  
tượng giao diện phổ dụng như TextBox, Button,… Giả sử các ₫ối  
tượng giao diện cùng chức năng trên các platform khác nhau hỗ  
trợ cùng interface thống nhất (nếu không ta dùng mẫu Adapter ₫ể  
có ₫ược kết quả này). Việc sử dụng cụ thể họ các class giao diện  
nào chỉ biết khi chương trình bắt ₫ầu chạy. Để giải quyết vấn ₫ề  
trên, cách tốt nhất là dùng mẫu AbstractFactory với lược ₫ồ class  
như sau :  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.2 Mẫu Abstract Factory  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.2 Mẫu Abstract Factory  
Ta có thể xây  
dựng mẫu  
AbstractFactory  
theo loại class  
pattern với lược  
₫ồ class như sau  
:
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ối tượng  
Slide 7  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
5.2 Mẫu Abstract Factory  
Các phần tử tham gia :  
ƒ IObjectA, IObjectB : interface thống nhất của các ₫ối tượng cùng  
chức năng trong các họ khác nhau.  
ƒ IAbstractFactory : interface của ₫ối tượng chuyên tạo các ₫ối  
tượng dùm cho Client.  
ƒ ConcreteFactory1… : class hiện thực các tác vụ tạo ₫ối tượng  
trong interface IAbstractFactory. Hệ thống có nhiều  
ConcreteFactory, mỗi ConcreteFactory sinh ra các ₫ối tượng cùng  
họ, các họ ₫ối tượng do các ConcreteFactory tạo ra tương ₫ồng  
nhau về vai trò, về chức năng.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.2 Mẫu Abstract Factory  
Các phần tử tham gia (tt) :  
ƒ ObjectA, ObjectB : class hiện thực ₫ối tượng ₫ược tạo ra bởi class  
ConcreteFactory tương ứng, nó hỗ trợ interface sử dụng tương  
ứng.  
ƒ Client : ₫oạn code cần tạo và sử dụng các ₫ối tượng. Client chỉ sử  
dụng các interface IAbstractFactory, IObjectA, IObjectB,… và như  
thế hoàn toàn ₫ộc lập với các class cụ thể mà nó sẽ dùng.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.2 Mẫu Abstract Factory  
Quá trình tương tác giữa các phần tử :  
ƒ Tại thời ₫iểm dịch, Client có biến tham khảo ₫ến ₫ối tượng  
IAbstractFactory (giả sử tên là factory).  
ƒ Tại thời ₫iểm run-time, dựa vào ngữ cảnh, Client sẽ biết cần sử  
dụng họ ₫ối tượng nào và nó sẽ tạo ₫ối tượng ConcreteFactory  
tương ứng rồi gán tham khảo vào biến factory. Sau ₫ó trong giải  
thuật, mỗi lần tạo ₫ối tượng cần dùng, thông qua biến factory,  
Client sẽ gởi thông ₫iệp ₫ể yêu cầu ConcreteFactory tạo ra ₫ối  
tượng mong muốn.  
ƒ Client dựa vào interface của ₫ối tượng ₫ược tạo ra ₫ể sử dụng ₫ối  
tượng này.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.3 Mẫu Factory Method  
Mục tiêu :  
ƒ Client ₫ịnh nghĩa interface các tác vụ khởi tạo ₫ối tượng phức  
hợp cần dùng rồi sử dụng các tác vụ này trong ₫oạn code của  
mình, nhưng không hiện thực cụ thể các tác vụ khởi tạo ₫ối  
tượng mà ₫ể class con của mình override và hiện thực theo  
yêu cầu riêng của từng class con.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.3 Mẫu Factory Method  
Thí dụ về việc dùng mẫu Factory method :  
ƒ Các ứng dụng trong bộ MS Office như Word, Excel, PowerPoint  
₫ều có cơ chế khởi tạo, xử lý tài liệu giống nhau cho dù cấu trúc  
vật lý của các tài liệu trong các ứng dụng là khác nhau. Để viết  
₫oạn code xử lý tài liệu trong các ứng dụng MS Office nhất quán,  
₫ộc lập với tài liệu cụ thể, Microsoft ₫ã dùng mẫu Factory Method  
như sau ₫ể thiết kế các ứng dụng MS Office :  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.3 Mẫu Factory Method  
docs  
Application  
IDocument  
CreateDocument()  
NewDocument()  
OpenDocument()  
Document* doc=CreateDocument();  
docs.Add(doc);  
doc->Open();  
Open()  
Close()  
Save()  
Revert()  
MyApplication  
MyDocument  
CreateDocument()  
return new MyDocument;  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.3 Mẫu Factory Method  
Ta có thể xây dựng mẫu Factory Method theo loại class pattern với  
lược ₫ồ class như sau :  
docs  
Creator  
IProduct  
FactoryMethod()  
AnOperation()  
...  
Product = FactoryMethod();  
...  
ConcreteCreator  
ConcreteProduct  
FactoryMethod()  
return new ConcreteProduct;  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.3 Mẫu Factory Method  
Các phần tử tham gia :  
ƒ Creator (Application) : class chứa code client cần tạo và sử dụng  
₫ối tượng phức hợp, nó sẽ chứa ₫ặc tả các tác vụ khởi tạo ₫ối  
tượng phức hợp cần dùng.  
ƒ ConcreteCreator (MyApplication) : class hiện thực các tác vụ tạo  
₫ối tượng trong class cha Creator.  
ƒ IProduct (IDocument) : interface của ₫ối tượng phức hợp cần tạo  
và sử dụng.  
ƒ ConcreteProduct (MyDocument) : class miêu tả ₫ối tượng phức  
hợp cụ thể cần tạo và sử dụng.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.4 Mẫu Prototype  
Mục tiêu :  
ƒ Tạo ₫ối tượng mới có nội dung y như ₫ối tượng ₫ã có sẵn.  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.4 Mẫu Prototype  
Thí dụ về việc dùng mẫu Prototype :  
ƒ Có nhiều khi ta muốn tạo ₫ối tượng mới có cấu trúc và nội dung cụ  
thể giống y như một ₫ội tượng ₫ã có sẵn. Cách tốt nhất là dùng  
mẫu Prototype, ₫ối tượng có sẵn ₫ược gọi là Prototype và phải  
chứa ít nhất tác vụ Clone() có nhiệm vụ trả về tham khảo ₫ến ₫ối  
tượng có cấu trúc và nội dung giống như như mình (₫ối tượng ₫ó  
có thể chính là mình).  
ƒ Thường dùng trong các phát biểu gán ₫ối tượng nhưng theo nghĩa  
giống như lệnh gán dữ liệu cổ ₫iển :  
int i1 = 5;  
Int i2 = i1; //i2 = 5  
I1 = 0; //i2 vẫn =5  
C1 c1 = new C1(); //có c1.i = 0;  
c1.i = 5;  
C1 c2 = c1.Clone(); //c2.i sẽ = 5;  
c1.i = 0; //c2.i vẫn =5  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.4 Mẫu Prototype  
prototype  
Prototype  
Client  
Clone()  
Operation()  
ConcretePrototype2  
ConcretePrototype1  
p = protoype.Clone();  
Clone()  
Clone()  
return copy of self;  
return copy of shelf;  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.4 Mẫu Prototype  
Các phần tử tham gia :  
ƒ Prototype : interface miêu tả các tác vụ của ₫ối tượng phức hợp  
cần dùng bởi Client, trong ₫ó cần có tác vụ Clone() với chức năng  
tạo ra ₫ối tượng có cầu trúc và nội dung giống hệt mình.  
ƒ ConcretePrototype1,… : class hiện thực các tác vụ trong class cha  
Prototype theo cách riêng của mình.  
ƒ Client : class miêu tả ₫oạn code tạo và sử dụng các ₫ối tượng  
ConcretePrototype1, ConcretePrototype2...  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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  
5.5 Mẫu Builder  
Mục tiêu :  
ƒ Giúp Client khởi tạo ₫ối tượng phức hợp (bao gộp) theo cơ chế  
tích lũy tăng dần thông qua nhiều lần gọi dịch vụ của ₫ối tượng  
Builder.  
ƒ Client không cần biết các thông tin hiện thực của ₫ối tượng ₫ó.  
Cụ thể Client không cần biết ₫ối tượng ₫ược tạo ra thuộc class  
nào, có cấu trúc cụ thể nào, các ₫ối tượng thành phần thuộc  
class cụ thể nào…  
Môn : Phân tích & thiết kế phần mềm hướng ₫ối tượng  
Chương 5 : Các mẫu thiết kế phục vụ khởi tạo ₫ố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 30 trang myanh 19640 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phân tích & Thiết kế hướng đối tượng - Chương 5: Các mẫu thiết kế phục vụ khởi tạo đối tượng (Creational 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_phan_tich_thiet_ke_huong_doi_tuong_chuong_5_cac_ma.pdf