Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 1
11.1 Tng quát vnhóm mu “Behavioral Patterns”
11.2 Mu Chain of Responsibility
11.3 Mu Template Method
11.4 Mu Strategy
11.5 Mu State
11.6 Mu Command
11.7 Mu Observer
11.8 Kếtchương
Chương 11
Các muthiếtkếche du hành vi, thutgii
trong ₫ốitượng (Behavioral Patterns)
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 2
11.1 Tng quát vnhóm mu “Behavioral Patterns”
Trong on code gii quyếtvn₫ề cang dng, khi cnphi
chnla 1 trong nhiuthutgii/hành vi khác nhau thì ta thường
dùng phát biu if/switch nhưsau :
Switch (acode) {
case ALG1 : //on code miêu tthutgii/hành vi 1
case ALG2 : //on code miêu tthutgii/hành vi 2
case ALGn : //on code miêu tthutgii/hành vi n
}
Đon code trên nhiu khuyếtimnhư: ohu5 thuc hoàn toàn
vào slượng thutgii/hành vi, vào chi tiếtcthcatng thut
gii/hành vi, phihiuchnh khi slượng/chi tiếtcathut
gii/hành vi bthay ₫ổi.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 3
11.1 Tng quát vnhóm mu “Behavioral Patterns”
Để khcphc các nhượcimcacáchlptrìnhcổ₫in trong
slide trước, cách ttnht dùng 1 trong các muthucnhóm
“Behavioral Patterns”.
Nhimvcacácmuthuc nhóm “” che ducácon code
miêu tthutgii/hành vi vào trong các ₫ốitượng, code ca client
chgitham kho₫ến₫ốitượng gi thông ipnhờ₫itượng
thchinthutgii/hành vi cthkhi cnthiết.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 4
11.2 Mu Chain of Responsibility
Mctiêu:
Mu dây chuyn trách nhim (Chain of Responsibility) giúp
tránh ₫ượcvicgnkếtcng giaphntgi request (Client)
viphntnhnvàx request (Server) bng cách cho phép
hơn1 ₫ốitượng cơhix request ó. Các ₫ốitượng nhn
x request s ₫ượcliênkếtli thành 1 dây chuyn, Client
stham kho₫ến₫ầu dây chuyn này ₫ể gi request khi
yêu cu.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 5
11.2 Mu Chain of Responsibility
Thí dvvicdùngmu Chain of Responsibility :
Trong ng dng trgiúp theo ngcnh thì user có thxem
thông tin trgiúp ca1 phntgiao dinnàoótrctiếptphnt
óbng cách nphichut vào nó. Lưu ý là các ₫ốitượng giao
dinthường ₫ượctchc theo dng cây thbc: 1 chương trình
nhiucasgiao din, micasgiao dinchanhiu₫ốitượng
giao din, mi₫ốitượng giao dincóth group cha nhiu₫ối
tượng giao din con… Tóm lislượng các ₫ốitượng giao din₫ơn
(không cha₫ốitượng khác na) cachương trình thường rtln,
chi phí hinthcttcstrgiúp cho ttccác ₫ốitượng ₫ơnnày
srtln, do óthường s ₫ượchinthcttthông qua nhiu
version mi₫ạt₫ượcshoàn chnh. Tuy nhiên, dưới góc nhìn user,
ngay cversion ₫ầu tiên, chương trình cũng phiáp ng ttmi
yêu cutrgiúp theo ngcnh trên mi₫ốitượng giao din.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 6
11.2 Mu Chain of Responsibility
Cách ttnht₫ể gii
quyếtvn₫ề trên
dùng muChain of
Responsibility vilược
₫ồ class nhưsau :
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 7
11.2 Mu Chain of Responsibility
Lược₫ồ ₫ốitượng liên quan ₫ến 1 button nào ócódng nhưsau :
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 8
11.2 Mu Chain of Responsibility
Theo lược₫ồ ₫ốitượng ca Button nhưtrên thì khi user nphichut
vào button ₫ể xem trgiúp vbutton óthì:
Hoclàhàmx HandleHelp() ca chính button óchy(nếucó
hinthc) ₫ể hinthni dung trgiúp chính xác vbutton ó.
Hoclàhàmx HandleHelp() ca₫ốitượng cha button schy
(GroupBox - nếucóhinthc) ₫ể hinthni dung trgiúp vphn
tGroupBox ó, ni dung này thường cha thông tin trgiúp ca
button.
Tương t, nếu GroupBox không hinthc hàm x HandleHelp()
thì hàm HandleHelp() ca Form schy, còn nếu Form cũng không
hinthc hàm x HandleHelp() thì cui cùng hàm x
HandleHelp() cachương trình schy. Trong trường hp này user
sxem ₫ượcni dung trgiúp ca toàn phnmm, trong ócó
thông tin sdng button mà hcn.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 9
11.2 Mu Chain of Responsibility
Ta có thxây dng
mu Chain of
Responsibility theo loi
object 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 : Nhp môn Công nghphnmm
Chương 11 : Các muthiếtkếche du hành vi, thutgii trong ₫ốitượng
Slide 10
11.2 Mu Chain of Responsibility
Các phnttham gia :
IService (IHelpHandler) : ₫ịnh nghĩa interface catácvx
request.
AbstractService (Widget) : ₫ặctcác thành phn dùng chung cho tt
cả₫itượng x request, thí dthuc tính tham kho₫ến₫ốitượng
i sau mình trong dây chuynxlý, hinthctácvrequest() vi
nhimvcơbnnhtlàgitácvnày ca₫ốitượng mình tham
khotrctiếp.
ConcreteService1… (Button…) : hinthctácvrequest() theo yêu
curiêngca mình theo ý tưởng chung nhưsau : nếucóthx
₫ược request, nó sxlý, nếu không thì gitiếp request cho ₫ối
tượng isaugii quyết.
Client : cha tham kho₫ến₫ốitượng ₫ầu tiên trong dây chuyn₫ể
milncnthchin request, nó sgi thông ipti₫ốitượng này.