Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 1
14.1 Tng quát vnhóm mu “Creational”
14.2 Mu Abstract Factory
14.3 Mu Factory Method
14.4 Mu Prototype
14.5 Mu Builder
14.6 Mu Singleton
14.7 Kếtchương
Chương 14
Các muthiếtkếphcvkhito₫ốitượng
(Creational Patterns)
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 2
14.1 Tng quát vnhóm mu “Creational”
Đốitượng thường cha nhiuthuctínhdliuvànhiu tham
kho₫ếncác₫ốitượng khác. Đon code khitogiátrcho các
thuc tính tham kho này phthuc hoàn toàn vào shin
thccthca₫ốitượng. Chúng ta cntáchon code này khi
code caclient sdng ₫ốitượng.
Thường client munto₫ốitượng phchp không cnquan
tâm ₫ến các thông tin cthchi tiếtsau:
Đốitượng phchpthuc class cthnào.
chacácloi₫ốitượng con nào, slượng ra sao.
Mi quan hgiacác₫ốitượng con nhưthếnào.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 3
14.1 Tng quát vnhóm mu “Creational”
Các muthiếtkế“Creational” sgiúp code client linh ₫ộng vmt
khito, qunlývàsdng ₫ốitượng. Chúngcóthcho phép
client chủ₫ng trong vicxác₫ịnh ₫ốitượng nào ₫ượcto ra, ai
tora₫ốitượng ó, cách thcvàthiimkhito₫ốitượng ó.
Đặcimnibtcacácmuthiếtkế“creational” on code
client cnsdng ₫ốitượng không trctiếpsinhra₫ốitượng
nhcác phnttrung gian ₫ể tăng ₫ộ linh ₫ộng, tithiu hóa s
phthuc vào các class ₫ốitượng cth.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 4
14.2 Mu Abstract Factory
Mctiêu:
Cung cp cho Client 1 interface gmtptácvkhitocác
₫ốitượng ₫ược dùng trong Client nhưng che dumi chi tiếtv
₫ốitượng ₫ượctora, thídnhưthuc class cthnào…
Mt trong các mctiêucavicviết code ng dng phicó
tính tng quát cao ₫ộ ₫ộclpcaovi chi tiếthinthcca
các ₫ốitượng dùng. Mt trong các phương án ₫ể ₫ạt
₫ượcmctiêutrênlàkhôngdùnglnh new ₫ể tora₫ốitượng
cn dùng nếu dùng lnh new thì phixác₫ịnh tên class c
th nhưvysphthuc vào class này. Mu
AbstractFactory sgiúp chúng ta to₫ốitượng không cn
biết tên class cth ₫ược dùng.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 5
14.2 Mu Abstract Factory
Thí dvvicdùngmu Abstract factory :
Ta munviếtchương trình GUI (dùng giao din₫ồ hatrc quan)
khnăng chy trên nhiu platform khác nhau (chương trình
multi-platform). Mi platform có mthcác class miêu tcác ₫ối
tượng giao dinphdng nhưTextBox, Button,… Giscác ₫ối
tượng giao dincùngchcnăng trên các platform khác nhau h
trcùng interface thng nht(nếu không ta dùng mu Adapter ₫ể
₫ượckếtqunày). Vicsdng cthhcác class giao din
nào chbiếtkhichương trình bt₫ầuchy. Để gii quyếtvn₫ề
trên, cách ttnht dùng mu AbstractFactory vilược₫ồ class
nhưsau :
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 6
14.2 Mu Abstract Factory
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 7
14.2 Mu Abstract Factory
Ta có thxây
dng mu
AbstractFactory
theo loi class
pattern vilược
₫ồ class nhưsau
:
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 8
14.2 Mu Abstract Factory
Các phnttham gia :
IObjectA, IObjectB : interface thng nhtcacác₫ốitượng cùng
chcnăng trong các hkhác nhau.
IAbstractFactory : interface ca₫ốitượng chuyên tocác₫ối
tượng dùm cho Client.
ConcreteFactory1… : class hinthccáctácvto₫ốitượng
trong interface IAbstractFactory. Hthng nhiu
ConcreteFactory, mi ConcreteFactory sinh ra các ₫ốitượng cùng
h, các họ₫itượng do các ConcreteFactory toratương ₫ồng
nhau vvai trò, vchcnăng.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 9
14.2 Mu Abstract Factory
Các phnttham gia (tt) :
ObjectA, ObjectB : class hinthc₫ốitượng ₫ượctorabi class
ConcreteFactory tương ng, nó htrinterface sdng tương
ng.
Client : on code cntovàsdng các ₫ốitượng. Client chs
dng các interface IAbstractFactory, IObjectA, IObjectB,… như
thếhoàn toàn ₫ộclpvi các class cth sdùng.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 14 : Các muthiếtkếphcvkhito₫ốitượng
Slide 10
14.2 Mu Abstract Factory
Quá trình tương tác gia các phnt:
Tithiimdch, Client có biến tham kho₫ến₫ốitượng
IAbstractFactory (gistênlàfactory).
Tithiim run-time, da vào ngcnh, Client sbiếtcns
dng họ₫itượng nào sto₫ốitượng ConcreteFactory
tương ng ri gán tham kho vào biếnfactory. Sauó trong gii
thut, milnto₫ốitượng cn dùng, thông qua biếnfactory,
Client sgi thông ip₫ể yêu cu ConcreteFactory tora₫ối
tượng mong mun.
Client da vào interface ca₫ốitượng ₫ượctora₫ể sdng ₫ối
tượng này.