Bài giảng 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 (Creational Patterns) - Nguyễn Văn Hiệp

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

pdf 30 trang yennguyen 1360
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ế 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 (Creational Patterns) - Nguyễn Văn Hiệp", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng 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 (Creational Patterns) - Nguyễn Văn Hiệp

Bài giảng 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 (Creational Patterns) - Nguyễn Văn Hiệp
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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
Chương 5
Các mẫu thiết kế phục vụ khởi tạo ₫ối tượng
(Creational Patterns)
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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ể. 
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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 :
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
5.2 Mẫu Abstract Factory
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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
:
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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 :
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
5.3 Mẫu Factory Method
Application
CreateDocument()
NewDocument()
OpenDocument()
MyDocument
IDocument
Open()
Close()
Save()
Revert()
Document* doc=CreateDocument();
docs.Add(doc);
doc->Open();
return new MyDocument;
MyApplication
CreateDocument()
docs
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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 :
Creator
FactoryMethod()
AnOperation()
ConcreteProduct
IProduct
...
Product = FactoryMethod();
...
return new ConcreteProduct;
ConcreteCreator
FactoryMethod()
docs
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
5.4 Mẫu Prototype
Client
Operation()
return copy of self; return copy of shelf;
prototype
Prototype
Clone()
p = protoype.Clone();
ConcretePrototype1
Clone()
ConcretePrototype2
Clone()
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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...
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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
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
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 21
5.5 Mẫu Builder
Thí dụ về việc dùng mẫu Builder :
ƒ Ta muốn viết chương trình RTFTranslate có chức năng ₫ọc file tài
liệu theo ₫ịnh dạng RTF rồi chuyển nội dung gốc thành 1 ₫ịnh
dạng xác ₫ịnh nào ₫ó, thí dụ như chuỗi văn bản thô mã ASCII, 
hay ₫ịnh dạng tài liệu khoa học TeX, hay ₫ịnh dạng MSWord,
Cho dù cần chuyển về ₫ịnh dạng nào (biết trước hay chưa biết
trước), ta muốn ₫oạn code thực hiện chuyển ₫ịnh dạng phải có
tính tổng quát và ₫ộc lập với ₫ịnh dạng ₫ích. 
ƒ Cách tốt nhất ₫ể giải quyết vấn ₫ề trên là dùng mẫu Builder với
lược ₫ồ class như sau :
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 22
5.5 Mẫu Builder
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 23
5.5 Mẫu Builder 
Ta có thể xây dựng mẫu Builder theo loại class pattern với lược ₫ồ
class 
như
sau :
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 24
5.5 Mẫu Builder 
Các phần tử tham gia :
ƒ IBuilder (IConverter) : interface thống nhất của các builder khác
nhau.
ƒ Dicrector (RTFTranslate) : ₫oạn code Client thực hiện giải thuật
tạo và phát triển ₫ối tượng phức hợp, ₫oạn code này phải ₫ộc lập
với chi tiết cụ thể về ₫ối tượng phức hợp ₫ược tạo ra. Director chỉ
sử dụng ₫ối tượng phức hợp thông qua interface thống nhất
IComplexObject.
ƒ ConcreteBuilder1 (ASCIIConverter) : class ₫ặc tả 1 builder cụ
thể, builder này sẽ tạo và phát triển ₫ối tượng phức hợp theo cấu
trúc riêng do nó quản lý. Nó cũng cung cấp tác vụ getResult() ₫ể
trả về tham khảo ₫ến ₫ối tượng phức hợp sau khi xây dựng xong, 
₫ối tượng phức hợp này phải hiện thực interface IComplexObject.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 25
5.5 Mẫu Builder 
Các phần tử tham gia :
ƒ IComplexObject (IResult) : interface thống nhất của các ₫ối tượng
phức hợp mà các builder khác nhau tạo ra.
ƒ ComplexObject1... (ASCIIString...) : class ₫ặc tả 1 ₫ối tượng phức
hợp cụ thể do 1 builder cụ thể tạo ra.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 26
5.6 Mẫu Singleton
Mục tiêu :
ƒ Đảm bảo chỉ có thể tạo ra 1 instance duy nhất của 1 class chức
năng xác ₫ịnh và cấp phát tham khảo ₫ến ₫ối tượng duy nhất này
cho các client ₫ể chúng dùng chung.
ƒ Thực tế trong nhiều hoạt ₫ộng của hệ thống, ₫ể ₫ảm bảo tính nhất
quán và ₫úng ₫ắn trong việc sử dụng tài nguyên của hệ thống, ta
phải ₫ảm bảo chỉ có thể tạo ra 1 ₫ối tượng quản lý tài nguyên ₫ó. 
Thí dụ ₫ể quản lý việc in ấn của các phần mềm ra 1 máy in ₫ược
₫úng ₫ắn và nhất quán, ta chỉ ₫ược tạo 1 ₫ối tượng "printer spooler" 
₫ể quản lý máy in tương ứng. Để quản lý việc truy xuất các file trên
thiết bị chứa tin của máy, ta chỉ ₫ược tạo ra 1 ₫ối tượng quản lý hệ
thống file duy nhất. Để quản lý các cửa sổ ứng dụng, ta chỉ ₫ược tạo
ra 1 ₫ối tượng quản lý windows duy nhất
ƒ Để giải quyết các vấn ₫ề trên, cách tốt nhất là dùng mẫu Singleton
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 27
5.6 Mẫu Singleton
Thí dụ về việc dùng mẫu Builder :
ƒ Sau ₫ây là lược ₫ồ class của mẫu Singleton giải quyết việc in ấn
của các ứng dụng trên 1 máy in xác ₫ịnh.
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 28
5.6 Mẫu Singleton 
Ta có thể xây dựng mẫu Singleton theo loại class pattern với lược ₫ồ
class như sau :
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 29
5.6 Mẫu Singleton
Các phần tử tham gia :
ƒ Singleton (PrintSpooler) : chịu trách nhiệm về việc tạo instance 
duy nhất cho class Singleton, trả về tham khảo ₫ến ₫ối tượng duy
nhất này khi có yêu cầu và không cho phép client tạo thêm ₫ối
tượng Singleton khác. 
ƒ Application : khi cần dùng ₫ối tượng Singleton, nó gọi tác vụ
getInstance() của class Singleton rồi dùng tham khảo này ₫ể truy
xuất dịch vụ của ₫ối tượng. Nó không thể dùng lệnh new ₫ể tạo
₫ối tượng Singleton khác
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
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 30
5.7 Kết chương
‰ Chương này ₫ã giới thiệu các thông tin cơ bản về nhóm mẫu
phục vụ khởi tạo ₫ối tượng phức hợp và thông tin chi tiết cụ thể về
các mẫu Asbtract Factory, Factory Method, Prototype, Builder, 
Singleton. 

File đính kèm:

  • pdfbai_giang_phan_tich_thiet_ke_phan_mem_huong_doi_tuong_chuong.pdf