Bài giảng Lập trình hướng đối tượng - Chương 14: Các mẫu thiết kế phục vụ khởi tạo đối tượng (Creational Patterns)

14.1 Tổng quát về nhóm mẫu “Creational”

14.2 Mẫu Abstract Factory

14.3 Mẫu Factory Method

14.4 Mẫu Prototype

14.5 Mẫu Builder

14.6 Mẫu Singleton

14.7 Kết chương

pdf 15 trang phuongnguyen 2700
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 14: 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

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Chương 14: Các mẫu thiết kế phục vụ khởi tạo đối tượng (Creational Patterns)

Bài giảng Lập trình hướng đối tượng - Chương 14: Các mẫu thiết kế phục vụ khởi tạo đối tượng (Creational Patterns)
 Chương 14
 Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 (Creational Patterns)
 14.1 Tổng quát về nhóm mẫu “Creational”
 14.2 Mẫu Abstract Factory
 14.3 Mẫu Factory Method
 14.4 Mẫu Prototype
 14.5 Mẫu Builder
 14.6 Mẫu Singleton
 14.7 Kếtchương
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 1
14.1 Tổng quát về nhóm mẫu “Creational”
‰ Đốitượng thường chứa nhiềuthuộctínhdữ liệuvànhiều tham
 khảo ₫ếncác₫ốitượng khác. Đoạn code khởitạogiá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ựccụ thể của ₫ốitượng. Chúng ta cầntách₫oạn code này khỏi
 code củaclient sử dụng ₫ốitượng.
‰ Thường client muốntạo ₫ốitượng phứchợp mà không cầnquan
 tâm ₫ến các thông tin cụ thể chi tiếtsau:
 ƒ Đốitượng phứchợpthuộc class cụ thể nào.
 ƒ Nó chứacácloại ₫ốitượng con nào, số lượng ra sao.
 ƒ Mối quan hệ giữacác₫ốitượng con như thế nào.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 2
14.1 Tổng quát về nhóm mẫu “Creational”
‰ Các mẫuthiếtkế “Creational” sẽ giúp code client linh ₫ộng về mặt
 khởitạo, quảnlývàsử dụng ₫ốitượng. Chúngcóthể cho phép
 client chủ₫ộng trong việcxác₫ịnh ₫ốitượng nào ₫ượctạo ra, ai
 tạora₫ốitượng ₫ó, cách thứcvàthời ₫iểmkhởitạo ₫ốitượng ₫ó.
‰ Đặc ₫iểmnổibậtcủacácmẫuthiếtkế “creational” là ₫oạn code 
 client cầnsử dụng ₫ốitượng không trựctiếpsinhra₫ốitượng mà
 nhờ các phầntử trung gian ₫ể tăng ₫ộ linh ₫ộng, tốithiểu hóa sự
 phụ thuộc vào các class ₫ốitượng cụ thể. 
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 3
14.2 Mẫu Abstract Factory
Mụctiêu:
 ƒ Cung cấp cho Client 1 interface gồmtậptácvụ khởitạocác
 ₫ốitượng ₫ược dùng trong Client nhưng che dấumọi chi tiếtvề
 ₫ốitượng ₫ượctạora, thídụ như thuộc class cụ thể nào
 ƒ Một trong các mụctiêucủaviệcviết code ứng dụng là phảicó
 tính tổng quát cao và ₫ộ ₫ộclậpcaovới chi tiếthiệnthựccủa
 các ₫ốitượng mà nó dùng. Một trong các phương án ₫ể ₫ạt
 ₫ượcmụctiêutrênlàkhôngdùnglệnh new ₫ể tạora₫ốitượng
 cần dùng vì nếu dùng lệnh new thì phảixác₫ịnh tên class cụ
 thể và như vậysẽ phụ thuộc vào class này. Mẫu
 AbstractFactory sẽ giúp chúng ta tạo ₫ốitượ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 Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 4
14.2 Mẫu Abstract Factory
Thí dụ về việcdùngmẫu Abstract factory :
ƒ Ta muốnviếtchương trình GUI (dùng giao diện ₫ồ họatrự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ộthọ các class miêu tả các ₫ối
 tượng giao diệnphổ dụng như TextBox, Button, Giả sử các ₫ối
 tượng giao diệncùngchứcnă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ó ₫ượckếtquả này). Việcsử dụng cụ thể họ các class giao diện
 nào chỉ biếtkhichương trình bắt ₫ầuchạy. Để giải quyếtvấn ₫ề
 trên, cách tốtnhất là dùng mẫu AbstractFactory vớilược ₫ồ class 
 như sau :
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 5
14.2 Mẫu Abstract Factory
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 6
14.2 Mẫu Abstract Factory 
Ta có thể xây
dựng mẫu
AbstractFactory
theo loại class 
pattern vớilược
₫ồ class như sau
:
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 7
14.2 Mẫu Abstract Factory 
Các phầntử tham gia :
ƒ IObjectA, IObjectB : interface thống nhấtcủacác₫ốitượng cùng
 chứcnăng trong các họ khác nhau.
ƒ IAbstractFactory : interface của ₫ốitượng chuyên tạocác₫ối
 tượng dùm cho Client.
ƒ ConcreteFactory1 : class hiệnthựccáctácvụ tạo ₫ốitượng
 trong interface IAbstractFactory. Hệ thống có nhiều
 ConcreteFactory, mỗi ConcreteFactory sinh ra các ₫ốitượng cùng
 họ, các họ₫ốitượng do các ConcreteFactory tạoratương ₫ồng
 nhau về vai trò, về chứcnăng.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 8
14.2 Mẫu Abstract Factory 
Các phầntử tham gia (tt) :
ƒ ObjectA, ObjectB : class hiệnthực ₫ốitượng ₫ượctạorabởi class 
 ConcreteFactory tương ứng, nó hỗ trợ interface sử dụng tương
 ứng.
ƒ Client : ₫oạn code cầntạovàsử dụng các ₫ốitượng. Client chỉ sử
 dụng các interface IAbstractFactory, IObjectA, IObjectB, và như
 thế hoàn toàn ₫ộclậpvới các class cụ thể mà nó sẽ dùng.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 9
14.2 Mẫu Abstract Factory 
Quá trình tương tác giữa các phầntử :
ƒ Tạithời ₫iểmdịch, Client có biến tham khảo ₫ến ₫ốitượng
 IAbstractFactory (giả sử tênlàfactory).
ƒ Tạithời ₫iểm run-time, dựa vào ngữ cảnh, Client sẽ biếtcầnsử
 dụng họ₫ốitượng nào và nó sẽ tạo ₫ốitượng ConcreteFactory
 tương ứng rồi gán tham khảo vào biếnfactory. Sau₫ó trong giải
 thuật, mỗilầntạo ₫ốitượng cần dùng, thông qua biếnfactory, 
 Client sẽ gởi thông ₫iệp ₫ể yêu cầu ConcreteFactory tạora₫ối
 tượng mong muốn.
ƒ Client dựa vào interface của ₫ốitượng ₫ượctạora₫ể sử dụng ₫ối
 tượng này.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 10
14.3 Mẫu Factory Method
Mụctiêu:
 ƒ Client ₫ịnh nghĩa interface các tác vụ khởitạo ₫ốitượng phức
 hợpcần dùng rồisử dụng các tác vụ này trong ₫oạncode của
 mình, nhưng không hiệnthựccụ thể các tác vụ khởitạo ₫ối
 tượng mà ₫ể class con của mình override và hiệnthực theo
 yêu cầuriêngcủatừng class con.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 11
14.3 Mẫu Factory Method
Thí dụ về việcdùngmẫu Factory method :
ƒ Các ứng dụng trong bộ MS Office như Word, Excel, PowerPoint 
 ₫ềucócơ chế khởitạo, xử lý tài liệugiống nhau cho dù cấutrúc
 vậtlýcủacáctàiliệ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ấtquán, 
 ₫ộclậpvớitàiliệucụ thể, Microsoft ₫ã dùng mẫu Factory Method 
 như sau ₫ể thiếtkế các ứng dụng MS Office :
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 12
14.3 Mẫu Factory Method
 docs
 IDocument Application
 Open() CreateDocument() Document* doc=CreateDocument();
 Close() NewDocument() docs.Add(doc);
 Save() OpenDocument() doc->Open();
 Revert()
 MyDocument MyApplication
 CreateDocument() return new MyDocument;
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 13
14.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
 IProduct Creator
 FactoryMethod() ...
 AnOperation() Product = FactoryMethod();
 ...
 ConcreteProduct ConcreteCreator
 FactoryMethod() return new ConcreteProduct;
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 14
14.3 Mẫu Factory Method
Các phầntử tham gia :
ƒ Creator (Application) : class chứa code client cầntạovàsử dụng
 ₫ốitượng phứchợp, nó sẽ chứa ₫ặctả các tác vụ khởitạo ₫ối
 tượng phứchợpcần dùng.
ƒ ConcreteCreator (MyApplication) : class hiệnthựccáctácvụ tạo
 ₫ốitượng trong class cha Creator.
ƒ IProduct (IDocument) : interface của ₫ốitượng phứchợpcầntạo
 và sử dụng.
ƒ ConcreteProduct (MyDocument) : class miêu tả₫ốitượng phức
 hợpcụ thể cầntạovàsử dụng.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 15
14.4 MẫuPrototype
Mụctiêu:
 ƒ Tạo ₫ốitượng mớicónội dung y như₫ốitượng ₫ãcósẵn.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 16
14.4 MẫuPrototype
Thí dụ về việcdùngmẫu Prototype :
ƒ Có nhiềukhitamuốntạo ₫ốitượng mớicócấutrúcvànội dung cụ
 thể giống y như một ₫ộitượng ₫ãcósẵn. Cách tốtnhấtlàdùng
 mẫu Prototype, ₫ốitượng có sẵn ₫ượcgọi là Prototype và phải
 chứaítnhấttácvụ Clone() có nhiệmvụ trả về tham khảo ₫ến ₫ối
 tượng có cấutrúcvànội dung giống như như mình (₫ốitượng ₫ó
 có thể chínhlàmình).
ƒ Thường dùng trong các phát biểu gán ₫ốitượng nhưng theo nghĩa
 giống như lệnh gán dữ liệucổ₫iển:
int i1 = 5; C1 c1 = new C1(); //có c1.i = 0;
Int i2 = i1; //i2 = 5 c1.i = 5;
I1 = 0; //i2 vẫn=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 Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 17
14.4 MẫuPrototype
 prototype
 Client Prototype
 Operation() Clone()
 ConcretePrototype1 ConcretePrototype2
 p = protoype.Clone();
 Clone() Clone()
 return copy of self; return copy of shelf;
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 18
14.4 MẫuPrototype
Các phầntử tham gia :
ƒ Prototype : interface miêu tả các tác vụ của ₫ốitượng phứchợp
 cần dùng bởi Client, trong ₫ócầncótácvụ Clone() vớichứcnăng
 tạora₫ốitượng có cầutrúcvànội dung giống hệt mình.
ƒ ConcretePrototype1, : class hiệnthựccáctácvụ trong class cha 
 Prototype theo cách riêng của mình.
ƒ Client : class miêu tả₫oạn code tạovàsử dụng các ₫ốitượng
 ConcretePrototype1, ConcretePrototype2...
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 19
14.5 MẫuBuilder
Mụctiêu:
 ƒ Giúp Client khởitạo ₫ốitượng phứchợp(baogộp) theo cơ chế
 tích lũytăng dần thông qua nhiềulầngọidịch vụ của ₫ốitượng
 Builder. 
 ƒ Client không cầnbiết các thông tin hiệnthựccủa ₫ốitượng ₫ó. 
 Cụ thể Client không cầnbiết ₫ốitượng ₫ượctạorathuộc class 
 nào, có cấutrúccụ thể nào, các ₫ốitượng thành phầnthuộc
 class cụ thể nào
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 20
14.5 MẫuBuilder
Thí dụ về việcdùngmẫu Builder :
ƒ Ta muốnviếtchương trình RTFTranslate có chứcnăng ₫ọc file tài
 liệu theo ₫ịnh dạng RTF rồi chuyểnnội dung gốc thành 1 ₫ịnh
 dạng xác ₫ịnh nào ₫ó, thí dụ như chuỗivănbản thô mã ASCII, 
 hay ₫ịnh dạng tài liệu khoa học TeX, hay ₫ịnh dạng MSWord,
 Chodùcần chuyểnvề₫ịnh dạng nào (biếttrước hay chưabiết
 trước), ta muốn ₫oạn code thựchiện chuyển ₫ịnh dạng phảicó
 tính tổng quát và ₫ộclậpvới ₫ịnh dạng ₫ích. 
ƒ Cách tốtnhất ₫ể giảiquyếtvấ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 Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 21
14.5 MẫuBuilder
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 22
14.5 MẫuBuilder 
Ta có thể xây dựng mẫu Builder theo loại class pattern vớilược ₫ồ
class 
như
sau :
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 23
14.5 MẫuBuilder 
Các phầntử tham gia :
ƒ IBuilder (IConverter) : interface thống nhấtcủa các builder khác
 nhau.
ƒ Dicrector (RTFTranslate) : ₫oạn code Client thựchiệngiảithuật
 tạo và phát triển ₫ốitượng phứchợp, ₫oạn code này phải ₫ộclập
 với chi tiếtcụ thể về₫ốitượng phứchợp ₫ượctạo ra. Director chỉ
 sử dụng ₫ốitượng phứchợp thông qua interface thống nhất
 IComplexObject.
ƒ ConcreteBuilder1 (ASCIIConverter) : class ₫ặctả 1 builder cụ
 thể, builder này sẽ tạo và phát triển ₫ốitượng phứchợp theo cấu
 trúc riêng do nó quản lý. Nó cũng cung cấptácvụ getResult() ₫ể
 trả về tham khảo ₫ến ₫ốitượng phứchợp sau khi xây dựng xong, 
 ₫ốitượng phứchợp này phảihiệnthực interface IComplexObject.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 24
 14.5 MẫuBuilder 
 Các phầntử tham gia :
 ƒ IComplexObject (IResult) : interface thống nhấtcủacác₫ốitượng
 phứchợp mà các builder khác nhau tạora.
 ƒ ComplexObject1 (ASCIIString) : class ₫ặctả 1 ₫ốitượng phức
 hợpcụ thể do 1 builder cụ thể tạora.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 25
 14.6 Mẫu Singleton
Mụctiêu:
ƒ Đảmbảochỉ có thể tạo ra 1 instance duy nhấtcủa 1 class chức
 năng xác ₫ịnh và cấp phát tham khảo ₫ến ₫ốitượng duy nhất này
 cho các client ₫ể chúng dùng chung.
ƒ Thựctế trong nhiềuhoạt ₫ộng củahệ thống, ₫ể ₫ảmbảo tính nhất
 quán và ₫úng ₫ắn trong việcsử dụng tài nguyên củahệ thống, ta
 phải ₫ảmbảochỉ có thể tạora1 ₫ốitượng quản lý tài nguyên ₫ó. 
 Thí dụ₫ểquảnlýviệcin ấncủa các phầnmềmra1 máyin ₫ược
 ₫úng ₫ắnvànhất quán, ta chỉ ₫ượctạo1 ₫ốitượng "printer spooler" 
 ₫ể quảnlýmáyin tương ứng. Để quảnlýviệctruyxuất các file trên
 thiếtbị chứatin của máy, ta chỉ₫ượctạora1 ₫ốitượng quảnlýhệ
 thống file duy nhất. Để quảnlýcáccửasổứng dụng, ta chỉ₫ượctạo
 ra 1 ₫ốitượng quản lý windows duy nhất
ƒ Để giải quyếtcácvấn ₫ề trên, cách tốtnhấtlàdùngmẫu Singleton
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 26
14.6 Mẫu Singleton
Thí dụ về việcdùngmẫu Builder :
ƒ Sau ₫ây là lược ₫ồ class củamẫu Singleton giảiquyếtviệcin ấn
 củacácứng dụng trên 1 máy in xác ₫ịnh.
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 27
14.6 Mẫu Singleton 
Ta có thể xây dựng mẫu Singleton theo loại class pattern vớilược ₫ồ
class như sau :
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 28
14.6 Mẫu Singleton
Các phầntử tham gia :
ƒ Singleton (PrintSpooler) : chịu trách nhiệmvề việctạo instance 
 duy nhất cho class Singleton, trả về tham khảo ₫ến ₫ốitượ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 ₫ốitượng Singleton, nó gọitácvụ
 getInstance() của class Singleton rồi dùng tham khảo này ₫ể truy
 xuấtdịch vụ của ₫ốitượng. Nó không thể dùng lệnh new ₫ể tạo
 ₫ốitượng Singleton khác
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 29
14.7 Kếtchương
‰ Chương này ₫ãgiớithiệu các thông tin cơ bảnvề nhóm mẫu
 phụcvụ khởitạo ₫ốitượng phứchợp và thông tin chi tiếtcụ thể về
 các mẫu Asbtract Factory, Factory Method, Prototype, Builder, 
 Singleton. 
 Khoa Khoa học& Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 14 : Các mẫuthiếtkế phụcvụ khởitạo ₫ốitượng
 © 2010 Slide 30

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_14_cac_mau_thiet.pdf