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
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
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:
- bai_giang_phan_tich_thiet_ke_phan_mem_huong_doi_tuong_chuong.pdf