You are on page 1of 133

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.

com/)
Page 1

Series bi dch Design Patern for Dummies
Tc gi: haihth from congdongcviet.com
Tng hp: hoangedward from congdongcviet.com


Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 2

Mc Lc
Series bi dch Design Pattern for Dummies ................................................................................................ 3
Li gii thiu ............................................................................................................................................................. 4
MU STRATEGY Chng II: Sp t k hoch hnh ng vi mu chin lc ............................... 7
CHNG III: TO V M RNG MT I TNG VI MU DECORATOR V FACTORY ......... 25
CHNG V: T MT CHO TI NHIU - MU DUY NHT SINGLETON V MU FLYWEIGHT ... 45
Chng VI: A MT CI CHT HNH TRN VO MT L HNH VUNG VI MU CHUYN
I ADAPTER V MU HNH DNG FAADE ............................................................................................. 67
Chng 7: TO HNG LOT I TNG VI MU TEMPLATE (Khun Mu ) V MU
BUILDER ( Th Xy ) ........................................................................................................................................... 84
CHNG VIII: X L TP HP VI MU ITERATOR V MU COMPOSITE .................................. 111



Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 3

Series bi dch Design Pattern for
Dummies
Li gii thiu
http://diendan.congdongcviet.com/showthread.php?t=46958


Chng II- Mu chin lc Strategy - Series bi dch Design
Pattern for Dummies
http://diendan.congdongcviet.com/showthread.php?t=46977


Chng III- Mu Decorator v Factory - Series bi dch Design
Pattern for Dummies
http://diendan.congdongcviet.com/showthread.php?t=47340


Chng V : Mu Singleton v Flyweight - Series bi dch Design
Pattern for Dummies
http://diendan.congdongcviet.com/showthread.php?t=47868


Chng 6 mu Adapter v mu Facade - Series bi dch Design
Pattern for Dummies
http://diendan.congdongcviet.com/showthread.php?t=63363


Chng 7 Mu Template v Builder - Series bi dch Design
Pattern for Dummies
http://diendan.congdongcviet.com/showthread.php?t=51142


Chng 8 mu Iterator v mu Composite - Series bi dch
Design Pattern for Dummies
http://diendan.congdongcviet.com/showthread.php?t=60497
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 4

Li gii thiu

Xin cho cc thnh vin trong din n !

Mnh yu my tnh, v lp trnh t nh. Thng thng khi b mt vn no, mnh ln
mng tm kim. Hu ht l tm ra c li gii nh cc bn khp ni tng hi v tng tr li.
Thit ngh mnh cng nn c mt cht ng gp g ngc li cho cng ng lp trnh
vin, d t d nhiu. Qua qu trnh t hc v tm ti, c khi nghe ti mt ngn ng mi no
l mnh tm sch c v thc hnh, nay cng tri qua mt s ngn ng v IDE sau: u
tin l lp trnh file .bat(trong MS-Dos), ri Foxpro, Pascal,C,C++,Visual Basic 3.0, Java,
Visual Basic 6, Visual C++6.0 MFC, Visual J++ 6.0, Visual Basic.Net, HMTL,Asp, Javascript,
PHP, v gn y nht l C# v ASP.net. Mnh nhn thy tt c ngn ng ch l cng c, v
mc ch ca chng l to ra sn phm. Cng c no cng c im mnh, im yu, nhng
nu bn s dng khng ng cch th khng th to ra mt sn phm tt.

Vy lm th no s dng cng c mt cch ng cch. chnh l t duy gii thut lp
trnh. T duy v gii thut l cch chng ta tru tng bi ton thnh tng bc nh, tng
bc, v lp rp chng thnh mt sn phm ng.

V d xy dng mt cn nh, cc bn cn chun b gch, ct, xi mng, nc, g, ngi
lp Khi c nguyn vt liu, cc bn bt tay thc hin tng bc nh xy dng mng
nh, xy dng cc bc tng, lp ngi

Trc y mi ngi lp trnh theo phng php th tc, chia mt vn ln thnh nhiu
phn nh khc nhau v x l tng phn mt theo ng trnh t. y l mt phng php
tt v tng c p dng trong mt thi gian di. Tuy nhin khi chng trnh ngy mt
cng ln, vic duy tr v pht trin hng trm ngn th tc l mt cng vic kh khn, tn
chi ph v d sai st. Khi phng php lp trnh hng i tng ra i. Phng php
ny cng chia mt bi ton ln thnh cc phn nh, nhng cc phn nh ny c ng gi
vo tng i tng, cc i tng ny gn gi vi thc t hn rt nhiu, nn vic pht trin
phn mm ngy cng d tip cn vi mi ngi.

V d lp rp mt ci ti vi, chng ta c i tng mn hnh, i tng mainboard, i
tng loa, i tng remote sau lp li vi nhau. Yahooo! Tht d dng ng khng cc
bn.

Trong topic ny mnh khng c nh gii thiu v lp trnh hng i tng, v sch v v
ch ny c qu nhiu, t ting anh qua ting vit, v t nhiu cc bn vo din n ny
u nm qua.
Vy ch tht s ca topic ny l g?

C ai trong cc bn tng t cu hi ti c kh nng xy 1 cn nh, cn nh 1 tng, 2 tng
thm ch 3 tng. Nhng khng bit xy cn nh 100 tng th sao? i vi cn nh 3 tng,
khi c sai st, hay thay i tng 2, bn c th sa, hoc thm ch p b v lm li,
nhng i vi cn nh 100 tng, b sai st tng th 3, chng l bn p nh c 97 tng
cn li?

V l nguyn nhn ra i ca mt th gi l Design Patterns Cc Mu Thit K. Cc
bn chc tng nghe ai ni ti mu thit k, ng vy, ti ngh bn nghe ni n n
trong lnh vc xy dng kin trc. V gi y, chng ta s ni ti n trong lnh vc xy
dng phn mm. Vy mu thit k l g: Ni nm na n l nhng gii php gii quyt
nhng vn thng gp trong pht trin phn mm theo hng i tng. N l nhng
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 5

bn mu, ta da vo xy dng nn nhng i tng. Vy li ch ca n th no? l
n gip ta c nhng i tng mm do, d thay i, d bo tr. V v sao mu thit k li
dnh dng ti lp trnh hng i tng. Tht ra th n b sung cho lp trnh hng i
tng, n m rng kh nng to ln cho lp trnh hng i tng.

Gn y khi mnh c dp c ti Design Patterns, mnh tht s thy n cun ht, rt c ch
dn lp trnh. Tuy nhin ti liu v design patterns cng khng nhiu(mnh bit khong vi
chc cun), ngn ng ch yu l ting anh, ti liu ting vit th t, chc ch c 1 cun ( do
MKPUB pht hnh, mnh cha c c, v mnh tnh, khng Tp.HCM nn khng mua
c). Cch tip cn vn ca mi sch cng rt khc nhau, c khi rt chuyn ngnh, v
tru tng, nhiu khi gy kh khn cho c ngi bn x ch khng dm ni ti ngi Vit
mnh.

Vi tham vng ng gp cho cng ng, mnh s dch thut mt cun sch mnh cho l
tng i d tip cn.
Sau khi c qua mt s cun sch nh sau:
- Design Patterns: Elements of Reusable Object-Oriented Software ( Do b t tc gi
Erich Gamma, Richard Helm, Ralph Johnson, John M.Vlissides ). Cun kinh in v
y nht
- C# 3.0 Design Patterns: ByJudith Bishop. ( Nh xut bn Oreilly)
- Head First Design Patterns ( Nh xut bn Oreilly)
- Design Patterns: by Christopher G. Lasater ( Nh xut bn Wordware)
- C# Design Patterns: A Tutorial by James W.Cooper ( Nh xut bn Addison-
Wesley)
- Design Patterns for Dummies: by Steve Holzner,PhD. ( Nh xut bn Wiley)
Mnh quyt nh chn cun Design Patterns for Dummies, tc gi Steve Holzner,PhD gii
thiu n cc bn. C cc nguyn nhn sau:
- Cch dn dt d hiu, v d sinh ng, ngn ng thn thin
- Khng s dng UML m t biu , ( s gy kh khn cho cc bn cha nm
vng UML)
- S mu tng i y .
- S trang sch khng nhiu lm. Ch khong 300trang.

Tuy nhin cc v d trong sch l c vit t Java. C th s gy ra lng tng mt cht cho
cc bn s dng C#. Nhng cc bn cng bit cha ca C# chnh l cha ca Borland C,
Borland C++, Delphi, Visual J++, nn cc bn s thy Java v C# khng khc bit lm.

i vi cc bn cha th t mnh chuyn i m ngun t Java ->C# theo cc v d trong
sch, mnh cng vit li cc v d theo C#. Tuy khng th hin 100% vic chuyn i,
nhng vn ni bt c ca tc gi.

V trnh anh ng ca mnh cha tt (ch t hc). Nn khng m bo dch st 100%
tc gi. Mt khc vic dch thut, v chy chng trnh cng tn nhiu thi gian. Mi tun
mnh s ng mt chng ca cun sch. Cun sch 12 chng. Tng thi gian trong 3
thng, cc bn s c lm quen vi hu ht cc mu thit k. C th thi gian trn so vi
my cun sch ca SAM: Hc trong 24gi, s lm cc bn thy nn. Nhng lp trnh l
mt ngh thut, m hc cch lm ch ngh thut th 3 thng chc chn cn cha .
Mong cc bn hy kin nhn.
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 6


Mi chng mnh s lp mt topic cc bn tin theo di v tranh lun.

Thanks all

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 7


MU STRATEGY
Chng II: Sp t k hoch hnh ng
vi mu chin lc


Trong chng ny, chng ta s i qua cc ni dung sau:
-M rng vic lp trnh hng i tng
-Lm quen vi cc khi nim tru tng, ng gi, a hnh v k tha
-Chuyn i qua li gia 2 khi nim is-a v has-a
-X l cng vic bng cc thun ton
-p dng mu Strategy vo thc t
Bn v cc chuyn gia thit k mu, i vo phng hp ca cng ty MegaGigaCo, gim c
iu hnh v cc thnh vin ban qun tr ang n mng mt hp ng mi v thit k xe
hi, mi ngi v tay v h reo n mng quang phng.

Hp ng ny s em n ngun thu nhp ln cho chng ta, gim iu hnh ni, cng vi
ting vang bp bp ca ru champagne v s phn khch ca gim c. Vic ca chng ta
l phi chc chn c c mt quy trnh thit k ng. ng nhn nt ln chic n chiu
v hnh nh cc biu hin ln tng. ng ni tip: y l kin ca ti

Sai, bn ni

Gim c thong mt cht git mnh v ni tip, Nhng nu chng ta

Khng, bn lc u ni.

Xin th li, bn ni vi Gim c v ban iu hnh, R rng l chng ta ang mo him
vi hp ng ny v i sai hng. Ti c th thy c t vn khi nhn vo cc biu
ny

Ban gim c th thm vi v tp trung v Gim c hi. Theo kin anh th sao

Ti l chuyn gia thit k mu, ngi s gii quyt tt c cc vn v tht k, Bn ni.
D nhin l cho nhng hp ng ln

Gim c vit ra mt con s d on cho chi ph, mt con s kh ln, tuy nhin hnh nh
vn cha ln i vi bn.

Li sai, bn ni

V gim c nhn bn nhu my.

Mu thit k, bn gii thch. Cc gii php chung gii quyt cho cc vn lp trnh
thng gp. Khng ch vy, n cn gip vic lp trnh tt hn, bo dng, v cng vic
nng cp d dng hn . ng thy , vic thu mt chuyn gia nh ti c nhiu ngha, khi
ti thy mt vn trong vic lp trnh m c th gii quyt theo mt mu thit k no ,
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 8

ti c th ni chi tit v n cho ng bit.

Tt, cc lp trnh vin trong cng ty ni mt cch min cng, kin ca anh v mu
tht k nghe cng hay y. Nhng chng ta s dng phng php lp trnh hng i
tng, iu cha gii quyt c vn ?

Khng bn ni. Thc t th ni dung chnh ca mu thit k l chng m rng khi nim
lp trnh hng i tng.

M RNG KHI NIM LP TRNH HNG I TNG?

Chng ta nhc li cun sch ca Gang Of Four (GOF: B t tc gi), ta Mu thit k:
S dng li cc thnh phn trong vic lp trnh phn mm do nh xut bn Addison
Wesley, 1995 xut bn. S dng li l mt kha cnh quan trng khi lm vic vi cc mu
thit k, v v th n cng gii quyt c cc vn ca lp trnh hng i tng(OOP).
Ti s tho lun trc v OOP trong chng ny, v sau s cho bn thy mi tng quan
gia OOP v mu Strategy hay cn gi l mu chin lc

OOP ban u c pht trin nh l mt phng php lp trnh cho cc vn ln v phc
tp. tng chnh l ng gi tt c chc nng vo trong i tng. Ni cch khc, y l
phng php chia tr. Trc khi OOP ra i, bn lp trnh theo phng php th tc, bn
c th chia cc tnh nng ca chng trnh thnh cc th tc khc nhau, nhng iu
cng ngy cng phc tp khi kch c chng trnh ln thm. Khi chng ta cn phi c
mt phng php mi qun l cc th tc mt cch d dng, v l nguyn nhn ra
i ca mt phng php mi, phng php qun l trn i tng.

V d, bn hy nhn vo nh bp v cch hot ng ca n, tht l c man cc s phc tp.
T lnh phi c cc bm lm mt, b phn cm bin nhit, qut v vn vn. Bp l c th
bao gm nhiu thit b nh b phn nhit , b nh thi gian, n..Theo cch nhn nhn
ny, khi ta xem xt nh bp vi mi b phn cng mt lc, ta thy nh bp qu phc tp.

Nhng nu bn bao bc tng thnh phn, thnh cc i tng, tnh hnh c th d dng
x l hn rt nhiu. y l ci t lnh. y l ci bp l. l ci my ra chn v vn
vn. Khng vn g ln c. Cc chi tit nh lm vic cng nhau c ta ng gi thnh
mt i tng.

cng chnh l cc i tng trong lp trnh hng i tng. Bn gp cc chc nng vo
trong mt i tng v chng d dng c nhn bit, no l ci t lnh, bp l hay my
ra chnV phng php lp trnh da trn cc i tng c gi l lp trnh hng i
tng ( Tt nhin bn chng nghe ai ni ti lp trnh hng t lnh, hay lp trnh hng bp
l )

V d, trong chng trnh ca bn, bn c mt i tng tn l Mn hnh, n bao gm cc
chc nng hin th d liu m bn mong mun. Mt i tng khc tn C s d liu
s lm nhim v giao tip vi my ch c s d liu v vn vnC th c nhiu phc tp
bn trong tng i tng, nhng khi bn ng gi mi th vo i tng, mi th tr
nn d dng hn rt nhiu. Bn c th lm vic vi khi nim i tng Mn hnh v mt
s chc nng n gin ca n nh ThitLpHSQut, CanhChnhMnHnh,
ThtLpBmVideo v hng t chc nng khc. N lm cho lp trnh tr nn d dng
hn, v l l do ti sao lp trnh hng i tng tr thnh phng php mnh m v
ph bin hn bao gi ht.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 9

BN KHI NIM CHNH CA OOP

OOP bao gm bn khi nim chnh l tru tng, ng gi, a hnh v k tha. Ti s tho
lun chng trong phn sau y:

Tru tng l g?

Khi bn lm vic vi mu thit k, bn s thy phn ln u lin quan n khi nim tru
tng. Tru tng l cch thc bn ngh ra xem xt vic gii quyt mt vn no .
Tru tng khng phi l mt k thut lp trnh. Thc cht, n ch c ngha l bn phi
nhn thc c vn trc khi p dng k thut hng i tng.

Tru tng l cch bn phn chia, cch gii quyt vn thnh nhng phn on nh hn.
y l cch thc bn gii quyt vn bng cch chia chng ra thnh tng phn nh c th
qun l c. Ni cch khc, tru tng ha mt bi ton, n gin ch l cch gii quyt
bi ton theo kiu hng i tng. Cc d liu cn thit cho tng i tng s tr thnh
thuc tnh ca i tng , thuc tnh c th l ring t cho i tng hoc cng cng
cho i tng khc s dng. Cc hnh vi m i tng th hin trong th gii thc cng tr
thnh mt hnh ng ca chng v c vit thnh m ca chng trnh.

Khi bn chc chn tm ra hng gii quyt mt bi ton ng n, bn mi c th p
dng cc mu thit k. Thng thng, khi lm vic vi mu thit k bn s tn nhiu thi
gian hn cho vic tru tng ha cc khi nim, hn l lm vic vi tng i tng c th.

ng gi l g?

Khi bn a tt c chc nng v d liu vo trong mt i tng, bn ng gi chng.
y l sc mnh thc s ca vic lp trnh hng i tng. Bn g b s phc tp ca
i tng khi ng gi tt c d liu vo trong i tng . ng gi l cch bn a
hng t ng dy in, ng, cm bin nhit, n vo trong mt i tng l t lnh.

Khi bn ng gi chc nng vo trong mt i tng, bn quyt nh cch thc m i
tng giao tip vi th gii bn ngoi. Mt ci t lnh c th mt qun l hng t th phc
tp bn trong, tuy nhin ngi s dng ch quan tm l n c th lm lnh thc n hay
khng? Cng cch thc , bn cng ch nh u l chc nng, thuc tnh bn trong ca t
lnh, u l chc nng thuc tnh n giao tip vi th gii bn ngoi.

C mt tng ng sau vic ng gi Bn che giu nhng th phc tp bn trong i
tng v to ra mt giao din n gin i tng giao tip vi phn m cn li ca bn.

Mu tht k cng l mt trng hp c bit ca s ng gi. Bn phi ng gi nhng g
bn cho l d thay i nht Mt s mu thit k xoay quanh tng l trch ra nhng phn
m d thay i nht hoc phn cn phi bo tr nhiu v ng gi chng vo mt i tng
ring dng dng x l hn. Xuyn sut cun sch ny, bn s nhn thy nhiu v s
ng gi v cch thc bt ng m mu thit k gii quyt cc vn thng gp.

a hnh l g?

Mt nn tng khc ca lp trnh hng i tng l tnh a hnh. l kh nng khi chng
ta lp trnh mt chc nng, chc nng c th lm vic vi nhiu loi i tng khc
nhau, ty thuc vo kiu thc s ca i tng trong thc t. V d, bn c th vit m
x l tt c cc hnh dng khc nhau nh hnh trn, hnh ch nht, tam gic.. vn vn.
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 10

Mc d chng c hnh dng khc nhau, chng c chung mt s hnh ng, v d nh chng
c chung chc nng l cVRa.

S dng tnh a hnh, bn c th vit code thc hin nhiu hnh ng trn loi hnh
dng m bn nh lm vic v sau quyt nh hnh dng thc t no s c s dng khi
chy chng trnh. a hnh ( nhiu hnh thc) c ngha l m bn vit ra c th s dng
c nhiu kiu ca i tng m bn khng phi vit li m.

Sau y l v d. Bn to ra mt lp (class) Shape vi phng thc chung l draw



Sau bn c th m rng mt lp mi, lp Rectangle, t lp Shape, v cho php n v
mt hnh ch nht nh sau:



Bn mun v mt hnh? Khng vn g. Bn vit mt t m to mt i tng tn
shape v gi phng thc draw:



Kt qu khi chy chng trnh:



Mun v hnh ch nht s dng cng m trn? Khng vn g. y l s k diu ca tnh
a hnh, hy to li bin shape vi kiu rectangle v chy li on code trn:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 11



Kt qu l:



Trong trng hp th nht, bn np mt i tng shape vo bin shape v gi phng
thc draw. Trong trng hp th hai, bn ly mt i tng rectangle v np n vo
cng bin shape ( mc d l bn khai bo n nh l 1 i tng shape) v sau gi
phng thc draw.

Vy l bn cng s dng mt bin shape, lu gi mt i tng shape, mt i tng
rectangle, chng trnh vn hot ng v rectangle c tha k t shape. y l cch bn
quyt nh kiu i tng no c np vo bin shape khi chy chng trnh v khi
ton b m ca bn vn khng h thay i.

K tha l g?

c im cui cng v ni bt ca lp trnh hng i tng l tnh k tha. L qui trnh m
mt lp c th tha hng ton b phng thc v thuc tnh ca mt lp khc. Bn c th
nhn thy s k tha trong v d trc, bt u t lp Shape:



Sau lp Rectangle k tha t lp Shape nh sau:



a hnh thng xut hin khi bn lm vic vi mu thit k bi v mu thit k c xu hng
ng h kt hp hn l k tha (Bn s dng kt hp khi i tng ca bn cha i
tng khc thay v tha hng t chng). K tha chnh l mi quan h Is-a (l mt). Ta
c th ni Rectangle is-a Shape.
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 12


Mu thit k- lp trnh hng i tng thng s dng vic kt hp hn l k tha. Khi
bn s dng kt hp, m ca bn cha ng mt i tng khc, hn l tha hng t
chng. Phng php ny t ra mm do, uyn chuyn thch ng vi nhiu loi i tng
trong cng mt cch, cng mt on m. Mu thit k thng da trn tnh a hnh.

Kt hp hay a hnh:

Th nghim u tin khi thit k mt chic xe hi mi.

Vy ai ni vi bn rng Kt hp th tt hn K tha. C l v d sau lm sng t
vn . Cc lp trnh vin ti MegaGigaCo (phn u chng) u bit v s k tha v
h bt u vic tht k xe hi mi bt chp li cnh bo ca bn cho n khi bn c c hi
ni chuyn vi h. H bit h ang phi thit k mt lot xe, v vy h bt u to ra mt
lp c s tn Vehicle vi mt phng thc tn l go , phng thc ny xut hin ln dng
ch Now Im driving.



Sau h tao tip mt lp mi, nh l lp StreetRacer, s dng Vehicle lm lp c s nh
sau:



Chng trnh ti y vn tt p. Bn c th cho chy chng trnh vi lp StreetRacer nh
sau:



Kt qu nhn c

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 13



Bn cng c th chy cng lc street racer v formula one racer vi cng mt cch nh
sau:



V kt qu l



Khng ti. Gim c v ban iu hnh ni. Vy cn g phi s dng mu thit k H hi
m mt nhn chm chm vo bn. Nhng sau h nhn c mt hp ng sn xut my
bay trc thng Helicopter. My bay trc thng ? H l lun, th cng l mt phng tin
vn chuyn. V vy h to mt lp Helicopter , c m rng ra t lp Vehicle :



Nhng li xut hin mt vn . Nu nh bn s dng helicopter trong cng mt iu kin
nh xe hi:



Bn s nhn c 3 phng tin nh sau: mt xe street racer, mt xe Formula One, mt xe
helicopter nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 14



C g khng n, Gim c ni mt cch h nghi. Ti sao helicopter (my bay trc thng)
m li ang chy? Hnh nh n ang bay th mi ng? Tuy nhin vn thc s ti t khi
cng ty MegaGigaCo nhn c mt hp ng ch to my bay phn lc Jet, khi chng
cng c k tha t lp Vehicle :



Khi bn cho chy bn phng tin trn: mt xe street racer, mt xe formula one, mt my
bay trc thng helicopter, mt my bay phn lc jet, bn nhn c kt qu sau:



Chc chn l c sai st y V gim c ln ting. My bay phn lc Jet th khng
chy trn ng, chng trn khng. Chng bay v rt nhanh. Khng vn g, cc lp
trnh vin trong cng ty p. Chng ti s ghi (override) ln phng thc go ca lp
Helicopter v lp Jet sa cha chng. H chnh sa li nh sau:



Gi lp my bay trc thng Helicopter bay c.

OK. Gim c ni Tuy nhin vo tun sau, ban gim c hp v quyt nh phi chuyn
t Now Im flying sang Now, Im flying 200mph v nhiu s thay i ti t k tip

C mt vn ny sinh y, bn gii thch. Cc lp trnh vin th hin mt chc nng
n gin l li mt chic xe hay mt chic phi c qua nhiu lp con. c th cha l
mt vn ln nhng nu bn x l cc cng vic ny mt cch kh thng xuyn, th vic
phi chnh sa mi lp con nh vy s tr thnh mt vn bo tr kh nghim trng.

Bn ni tip: c th l s k tha khng phi l cu tr li cho tnh hung ny. Ni m
bn cn phi thay i chc nng thng xuyn cc lp con. Bn cn phi chnh sa, bo
tr phn ln cc on m cc lp con khi c s thay i. V khi c cng nhiu lp k tha
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 15

lin quan, chng cng cn c phi bo tr khi c s thay i, v khi bn phi cp nht
cc phng thc go mi mi.

Vn bn phi gii quyt y l lm sao trnh c vic thay i cc lp con. Nu bn
khng trnh c iu ny, bn s phi chnh sa rt nhiu file cp nht m ca bn.

C l c mt cch tt hn x l vn ny hn l s dng s k tha.

Hey mt lp trnh vin ni, Sao anh khng s dng giao din interface thay cho s k
tha inheritance? Anh c th ci t mt giao din IFly v cho giao din mt phng
thc go v cho lp Helicopter hin thc giao din nh sau:



Khng tt bn ni. Anh vn cha gii quyt n tha vn . Mi lp v lp con vn phi
hin thc cho ring n mt giao din, cng ging nh trng hp ca s k tha. Bi v giao
din th khng ci t ni dung, bn vn phi vit code cho tng lp, iu ny c ngha l
chng c s dng li c mt on code no c.

Nm vng s thay i t is-a sang has-a

Mi vic u thay i. Trong thi bui thng mi pht trin, mi th thay i nhanh chng.
V vy vic lp k hoch cho s thay i l rt ng gi. Nu bn c mt vn nh cn
phi c mt gii php nh, bn c th khng cn phi lp mt k hoch ln lao cho s thay
i. Nhng nu bn lm vic trong mt d n nghim tc, vi mt khi lng cng vic
ng k, th ng l lc bn nn nhn li v mt k hoch nghim tc khi c s thay i.
Cc on m m bn vit hm nay, s phi chnh sa li ph hp vi nhng yu cu
pht trin trong tng lai. Hu ht cc nh pht trin khng ch ti vn ny, v sau
h lun lun hi tic. Vy cu hi t ra l d n phi ln ti u, bn quan tm n vn
thay i. l s nh gi ca ring bn, mt phn ca ngh thut lp trnh. Bng cch
nm vng phng php x l s thay i, bn s bit r hn khi no th nn thc hin n.

C mt du hiu ng ch y: Phn chia cc on m d thay i trong chng trnh
ring bit vi phn cn li. V lm cho chng cng c lp cng tt cho s bo tr nng cp.
Bn cng nn c gng ti s dng nhng phn ny cng nhiu cng tt.

iu ny c ngha l nu ng dng ca bn c mt phn b thay i, bn c th em n
ring ra, sau thay i tng phn ring bit mt cch d dng trong khi vn khng b nh
hng bi nhng tc dng ph ca n.

V y l cch lp k hoch cho s thay i, v v sao k tha li khng th gii quyt
tt cc s thay i ny. Vi s k tha, lp c s v cc lp con c mt mi quan h is-a.
V d , lp Helicopter c quan h is-a vi lp Vehicle, iu ny c ngha Helicopter tha k
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 16

mi th t Vehicle, v nu bn phi chnh sa cc phng thc ny, bn s gp phi vn
bo tr n trong tng lai. Lp c s x l phng thc theo mt cch, v lp k tha li
thay i n, v lp k tip li thay i n thm mt ln na. V cui cng bn c mt l
mt lc cc bin th ca cng 1 phng thc qua cc lp con.

Mc khc, nu bn c th trch nhng on code d thay i v ng gi chng vo i
tng, bn c th s dng cc i tng ny khi cn. Nhim v mi l x l trn cc i
tng ny. Bn khng vic x l ly lan qua cc lp con. Lm nh vy s cho php
bn chnh sa m ca bn bng vic to ra s kt hp composites cc i tng. Vi
composites kt hp ny, bn c th d dng chn ra v s dng i tng cn thit. Mt
quan h has-a mi c to ra. Mt chic xe street racer s c mt has-a cch di
chuyn, c ng gi vo i tng. Mt my bay trc thng s c mt cch ring di
chuyn, v cng c ng gi vo i tng. Tng i tng s thc hin hnh ng ca
ring n.

Mt i tng, mt nhim v thng l c ngha hn l vic k tha cc lp, v to ra
hng t cc lp con. Ni cch khc, chng ta sp xp li da trn nhim v ca lp, ch
khng phi trn s k tha.

S dng k tha s t ng ci t mi thuc tnh mt cch nghim ngt, bao gm c quan
h is-a, l th gy ra cc rc ri khi bo tr cng nh khi m rng. Nu bn t k hoch
cho s thay i, bn nn ngh ti quan h has-a , ni m m ca bn bao gm nhiu i
tng m c th d dng cp nht khi c s thay i xy ra.

Gi : Khi c k hoch cho s thay i, hy thay th quan h is-a thnh quan h has-a
v t cc on m d thay i vo cc i tng trong ng dng ny hn l k tha
chng.

K HOCH CHNH SA

Lm th no m tng phn chia cc on m d thay i s hot ng trong v d
Vehicle/StreetRacer/Helicopter nhc trc y. Theo kin ca gim c iu hnh,
phn c thay i nhiu nht l phng thc go , do chng ta s tch n ra. Trong
thut ng v thit k mu, mi cch hin thc mt phng thc c gi l 1 thut
ton(algorithm) hay c th gi l 1 chin lc (strategy). V vy bn c th to mt tp hp
cc gii thut s dng cho cc bin ca bn nh StreetRacer, FormulaOne, Helicopter, v
Jet . Lm nh th phn chia cc on m d thay i vo trong thut ton. Tng thut
ton s hon thnh 1 nhim v.

Cch to thut ton

chc chn mi thut ton u hin thc cng mt phng thc (phng thc go trn).
Bn cn phi to mt giao din interface cho n (ND: Interface l mt khi nim rt hay
trong OOP, m khi c dp chng ta s tho lun v n) nh sau:



Giao din GoAlgorithm c mt phng thc duy nht go. chc chn rng mi thun ton
c th c s dng bi bt k lp Vehicle no, ta cn phi hin thc interface ny. Thut
ton u tin GoByDrivingAlgorithm , s hin th vn bn Now Im driving. V y l m
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 17

ca thut ton:



Ngoi ra, thut ton GoByFlying, s hin th vn bn Now Im flying. M nh sau:



V cui cng, thut ton GoByFlyingFast, s c s dng bi my bay phn lc, hin th
dng vn bn Now Im flying fast



Tuyt vi. Bn va phn chia cc thut ton ca mnh ra khi phn m. Bn ang thc hin
thao tc thc thi quan h has-a hn l quan h is-a. By gi bn c th a cc thut
ton ny vo s dng.

S DNG THUT TON

Bn ang c mt s thut ton, bn c th to cc i tng v s dng quan h has-a
thay cho is-a. Sau khi bn to mt i tng t mt thut ton, bn cn phi lu tr i
tng u . V vy hy thm vo lp c s Vehicle, mt phng thc mi
SetGoAlgorithm. Phng thc ny s lu tr thut ton m bn mun s dng. M nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 18



By gi khi bn mun s dng mt thut ton c th no lp k tha, tt c vic cn
lm l gi phng thc setGoAlgorithm vi mt i tng thut ton ng, theo cch nh
sau:



Phng thc go ca lp Vehicle c cht thay i. Trc y l:



Tuy nhin, by gi n phi gi phng thc c nh ngha cc lp thut ton. M mi
nh sau:



By gi th tt c nhng g phi lm l chn ng thut ton m bn mun s dng cho
phng tin no . V d vi street racer s l thut ton GoByDrivingAlgorithm:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 19



Xe Formula One cng s dng cng mt thut ton trn, m nh sau:



Nhng my bay trc thng helicopter s s dng thut ton GoByFlyingAlgorithm:



V my bay phn lc Jet s s dng thut ton GoByFlyingFastAlgorithm



OK. n lc chy th chng trnh. Bin dch v chy th chng trnh nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 20



Kt qu:



Kt qu ng nh mong i. Tuy nhin by gi bn s dng mi quan h has-a thay v
quan h k tha is-a. T lc ny bn c th s dng cc thut ton xuyn sut chng
trnh, bt c u, v n khng cn nm trong cc lp StreetRacer hay Helicopter na.

K thut ny thay th cho cch to cc lp con v s dng k tha. Nu bn s dng mt
quan h k tha is-a, bn s bt u s rc ri cho vic kim sot c cc phng thc
trong lp c s v cc lp con trong v d l bn phi np ln phng thc go cho lp
Helicopter v Jet. Nu bn s dng m hnh has-a, bn c th to ra mt dng h cc
thut ton mt cch r rng, v sau bn chn mt thut ton thch hp s dng.

Theo cch ny, bn c th khc phc c vn m s k tha gy ra cho hu ht
cc lp trnh vin: nu bn phi gii quyt mt chc nng c th no qua nhiu th h
ca mt lp, v chc nng ny lin tc thay i, bn s phi chnh sa rt nhiu m ca
mnh. Mt khc, khi bn tp trung chc nng vo mt thut ton duy nht, vic thay i
n s d dng hn rt nhiu.

Quay li v d trn, khi ban gim c mun thay i t Now Im flying sang Now Im
flying at 20 mph. n gin, bn ch cn chnh sa thut ton GoByFlying:



V by gi tt c m ca bn t ng c cp nht, bn khng cn thit phi i tm v
chnh sa tng lp con nh trc na. Theo cch ny, bn tp trung s x l mt chc
nng vo mt i tng thut ton duy nht, bn s d dng qun l i tng ny trong
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 21

trng hp yu cu chc nng b thay i.

Chn la thut ton khi thc thi chng trnh

i mt cht, Gim c MegaGigaCo ni. C vic xy ra, my bay phn lc khng ch bay
nhanh, u tin n chy trn ng bng mt lc, v khi p xung mt t, n li tip tc
chy trn ng bng na. V vy chng ta phi chnh sa chc nng cho n li : u tin l
chy trn ng bng, ri bay, ri chy tip?

l v mt l thuyt, cc lp trnh vin rn r Nhng iu lm chng ta phi vit
thm nhiu on m na

Khng sao c Bn ni. l mt trong nhng im k diu ca vic s dng mt i
tng thut ton bn ngoi. Bn c th thay i n khi bn thc thi chng trnh

Khi bn vit m cho mt chc nng trong mt lp, bn khng th thay i n khi thc thi
chng trnh. Tuy nhin khi bn s dng mt i tng thut ton bn ngoi vi mi quan
h has-a, bn d dng thay i chc nng lc chng trnh hot ng. Ni cch khc
mt quan h has-a cho php bn d dng thay i hn mt quan h is-a c bit khi
chng trnh ang hot ng.

V y l v d cho vic s dng linh hot cc thut ton, cng nh vic thay i n khi
chng trnh ang chy. Bn c th to mt my ban phn lc, c th chy trn ng
bng vi thut ton GoByDrivingAlgorithm, nh m sau:



my bay phn lc chy c trn ng bng, bn gi phng thc go:



Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 22

Bn c th ci t thut ton mi setGoAlgorithm cho my bay phn lc, thay i
phng thc go mt cch linh ng, v sau gi li phng thc go thy s khc bit.



V y l kt qu: my bay phn lc, chy trn ng bng, ri bay, ri chy trn ng,
khng vn g c.



Bn thy , vic chuyn i mt thut ton lc thc thi chng trnh rt d dng. Ni cch
khc, nu bn vic x l thut ton vo ni ti mt lp, bn s khng th thay i n lc
chy chng trnh. Nhng khi bn ci t mt chin lc Strategy, bn s d dng thay
i n khi chy chng trnh. Tt c nhng iu trn mang chng ta n mt mu thit k
Strategy, hay c gi l mu chin lc.

MU STRATEGY Mu chin lc

Mu chin lc l mu thit k chng ta hc u tin trong quyn sch ny, v thc t l
chng ta cng nhau i xuyn sut qua chng ny hiu v n. ngha thc s ca
mu chin lc l bn tch ri phn x l mt chc nng c th ra khi i tng ca bn.
Sau to ra mt tp hp cc thut ton x l chc nng v la chn thut ton no
m bn thy ng n nht khi thc thi chng trnh. Mu thit k ny thng c s
dng thay th cho s k tha, khi bn mun chm dt vic theo di v chnh sa mt
chc nng qua nhiu lp con.
Chng ta c th nhn thy vn tng qut nh sau. u tin mi vic u n, bn c mt
i tng, mt chc nng



Mt thi gian sau , do yu cu c bit, bn cn c thm mt lp mi, bn k tha lp c,
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 23

v ghi ln phng thc c tha hng. Bn ang dn tri vic x l chc nng qua
nhiu lp con nh hnh:



Mu Strategy, mu chin lc ni rng: bn cn phi tch nhng phn d thay i v
ng gi chng vo cc i tng v bn c th s dng cc i tng ny khi cn. By gi
bn c th chnh sa m ca mnh thng qua vic to s kt hp cc i tng. Khi
chng trnh thc thi, bn ch cn s dng ng i tng m bn cn. Nh hnh sau:



Cun sch GoF ni rng mu Strategy, mu chin lc nh sau: nh ngha mt tp hp
cc thut ton, ng gi chng thnh tng loi mt, v gip chng c th hon i cho
nhau. Mu chin lc gip cc thut ton c lp hn khi c s dng.

Mu chin lc ch ra rng, i khi, n s c p dng tt cho mc ch hng chc nng.
V n c bit quan trng khi bn mun thc hin cng vic nng cp, bo tr cho cc on
m d thay i ca bn mt cch ring bit vi ton b m ca chng trnh, hoc khi bn
mun thay i thut ton s dng khi chng trnh c thc thi.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 24

Gi : Bn nn s dng mu Strategy khi c nhng tnh hung sau:

Bn c mt on m d thay i, v bn tch chng ra khi chng trnh chnh
d dng bo tr
Bn mun trnh s rc ri, khi phi hin thc mt chc nng no qua qu nhiu
lp con.
Bn mun thay i thut ton s dng khi chy chng trnh

Chng ti khng cung cp m ngun cho bn. Thay vo , bn hy lm quen vi vic suy
ngh, v khi tng ti l lc bn nm vng mu thit k ny. iu ny cng ging
nh mt cng vic phi thc hin cho mu Chin lc.

Vic hiu bit cch thc lm vic ca cc mu thit k khc nhau cng gip bn c c hi
tho lun vi ng nghip khc. Hu ht cc lp trnh vin chuyn nghip u bit mt s
mu thit k c bn. V khi mi ngi trong nhm ca bn ni ti mu chin lc, mi
ngi gt u ra v hiu bit, th bn cng c th lm nh vy.

Source code Visual Studio 2008 C#. Download ti y
Ht chng II. n tip tun sau...

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 25

CHNG III: TO V M RNG MT I
TNG VI MU DECORATOR V
FACTORY

Trong chng ny, chng ta s tho lun v mt s ni dung sau:

Gi vng nguyn tc vit m Open-Close hay Lun m cho vic m rng, nhng
ng cho vic sa i
Gii thiu v mu trang tr Decorator
Cc v d v mu trang tr Decorator
Xy dng cc i tng vi mu nh my Factory
ng gi vic khi to i tng bng mu nh my Factory
S dng cc phng thc khi to nh my Factory Method

Bn ang lm nhn vin t vn Thit K Mu ti cng ty GigantoComputer, vi mc lng
kh cao v bn ang trong cn tin cng ty.

Hm nay c mn g? bn hi tay u bp kh chu ang ng sau bp nng.

Cho mt ci hamburger, bn ni v xoay xoay ci khay trong tay.

Ngi u bp mang ci hamburger n bn tnh tin, khng qun hi li C thm tht rn
khng?

Chc chn ri, bn ni.

Ngi u bp xa cc phiu n c trn my tnh tin v khi ng li.

Hamburger v tht rn. Va ni anh ta va g vo my tnh tin.

Cho thm mt t pho mt Bn ni.

Ngi u bp nm mt nh nhn kh chu , xa ci phiu n, m m ci bn phm v ni
Hamburger vi pho mt v tht nng. Ok. ri ch?

Hmm, bn ni, nhn qut qua ci thc n Hay l thm mt cht tht xng khi?

Ngi u bp nhn chm chm vo bn v dng nh nh vng ra mt vi cu kh chu g
nhng vn nhp phiu n vo my.

Hey, bn ni. Anh chc chn l c li nhiu hn t vic s dng mu thit k trang tr
Decorator ch h?

Vng, anh u bp ni, ngc nhin khi bn ni v vn ny Ti ni vn ny c
ngn ln ri

Bn cm ci Hamburger pho mt tht xng khi vi v hnh phc v ni Thm mt vi lt
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 26

c chua na th tuyt!

Chng ny ni v hai mu thit k quan trng, n s lp y nhng thiu st trong vic
lp trnh hng i tng c bn, c bit l kh nng k tha. y l hai mu trang tr
Decorator v mu nh my Factory.

Mu trang tr Decorator l la chn hon ho cho tnh hung ti va nu trn bi v ta
ang ni v kh nng m rng chc nng cho mt lp c sn. Sau khi vit mt lp, bn c
th thm phn trang tr Decorator (cc lp m rng) m rng lp ny. Khi bn khng
phi sa i ln lp gc. Kt qu l ci Hamburger ca bn tr thnh Hamburger pho mt,
ri Hamburger pho mt tht xng khi, mi th tht d dng.

Nguyn l M cho vic m rng. ng cho vic sa i

Mt trong nhng kha cnh quan trng nht trong qu trnh pht trin mt ng dng l cc
nh pht trin v lp trnh vin phi i u vi s thay i, v l l do v sao cc mu
thit k ny li c gii thiu trc tin. C th ni cc Mu Thit K s gip bn gii quyt
c cc s thay i, v bn c th d dng chuyn i m ngun ca mnh cho cc trng
hp mi v bt kh khng. Nh ti ni qua trong sut cun sch ny,lp trnh vin
thng tiu tn thi gian cho vic m rng v thay i m ngun hn l pht trin m
ngun gc.

Mu chin lc Strategy c gii thiu trc y trong chng II, gip bn x l nhng
s thay i bng cch cho php bn chn la mt thut ton thch hp t mt tp hp thut
ton bn ngoi hn l phi vit li m ngun. Mu trang tr Decorator cng tng t vy, n
cho php bn vit tip m ngun, trnh vic sa i ln m ngun gc, trong khi vn p
ng c yu cu thay i. l im chnh yu ti mun nhn mnh.

Ghi nh:Hy lm cho m ngun ca bn p ng c nguyn tc Lun ng cho s
chnh sa, v lun m cho vic m rng cng nhiu cng tt. Ni cch khc, hy thit k
m ngun sao cho khng cn phi thay i g nhiu nhng lun c th m rng khi cn.

y l mt v d cho vic vit m ngun lun ng cho s thay i.
Cng ty m bn ang lm t vn, cng ty GigantoComputer, quyt nh lm mt ci my vi
tnh mi.

y l m ngun ca lp Computer:



Khi mt i tng computer c khi to. Phng thc description s tr v vn bn
Youre getting a computer. . Ti gi mi vic vn tt p. Nhng mt s khch hng quyt
nh rng h mun c mt ci a cng trong my tnh. Khng vn g c Cc lp vin
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 27

trong cng ty p. Chng ta ch cn chnh sa m ngun li mt cht nh sau:



By gi khi mt i tng computer c to v bn gi phng thc description, bn s
nhn c vn bn Youre getting a computer and a disk. Nhng mt vi khch hng vn
cha hi lng. H mun thm mt ci mn hnh na. V th l cc lp trnh vin phi chnh
sa tip nh sau:



By gi, khi bn to mt computer v gi phng thc description bn s thy



Bn c th thy vn y: Cc lp trnh vin phi thay i m ngun mi khi khch
hng thay i yu cu ca h. R rng, l vn chnh.

V bn, vi cng v l t vn mu thit k, s chnh sa n.

MU TRANG TR DECORATOR?

Ti phi nhc li mt ln na: cng nhiu cng tt, hy vit m ngun ca bn ng cho
vic sa i, nhng m cho vic m rng. Trong chng II, bn bit cch lm vic vi
mu chin lc Strategy. l, bn ng gi m ngun vo cc thut ton ring bit s
dng d dng, hn l vic x l chng thng qua cc lp con.

Mu trang tr Decorator c mt cch tip cn khc. Thay v s dng mt thut ton bn
ngoi, mu thit k ny s dng mt phng php bao bc m ngun ca bn m rng
chng.

Ghi nh: nh ngha chnh thc ca mu trang tr Decorator trong sch ca GoF c vit:
Gn kt thm mt s tnh nng cho i tng mt cch linh ng. Mu trang tr Decorator
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 28

cung cp mt phng php linh hot hn l s dng lp con m rng chc nng cho i
tng

Mu thit k ny c gi l Ngi trang tr Decorator nhng dng nh l tn gi
rm r. Mt ci tn tt hn cho mu ny c th l Ngi tng thm Augmentor hay
Ngi m rng Extender bi v n cho php bn: tng thm hay m rng mt lp mt
cch linh ng khi chng trnh c thc thi. Tuy nhin, nh bn thy trong chng ny,
thut ng Ngi trang tr Decorator cn gip bn hiu r hn khi nim ng cho vic
chnh sa, m cho vic m rng. Khi bn lm hnh ng bao bc m ngun m rng
thm chc nng, bn khng cn thit chnh sa li m ngun c, bn ch yu tp trung vo
vic trang tr n.

V y l cch m n lm vic. Bn bt u vi mt ci my tnh computer n gin sau:



Khi bn gi phng thc description, bn nhn c kt qu Youre getting a computer.
By gi bn mun thm t phn cng, mt cng mi chng hn. Trong trng hp ny,
bn c th thm mt lp bao bc wrapper nh sau:



By gi khi bn gi phng thc description ca lp bao bc wrapper, n s gi phng
thc description ca i tng computer nhn c kt qu Youre getting a computer
v i tng cng disk s tr v kt qu and a disk. Kt qu bn nhn c Youre
getting a computer and a disk

Nu bn mun thm vi th na vo lp my tnh Computer, bn hy t n vo lp bao
bc wrapper, v d nh thm vo ci mn hnh Monitor:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 29



By gi khi bn gi phng thc description, mi vic s xy ra nh sau:

i tng computer, s thc hin phng thc description to ra kt qu Youre
getting a computer
i tng disk, s thc hin tip phng thc trn thm vo and a disk
i tng monitor, tip tc thc hin phng thc description thm vo and a
monitor
Kt qu l bn nhn c Youre getting a computer and a disk and a monitor

V D V MU TRANG TR DECORATOR

Bn bt u vit mt lp my tnh Computer n gin, vi mt phng thc description tr
v kt qu computer nh sau:



OK. Bn hon thnh ci my tnh n gin. By gi lm sao to mt lp trang tr?
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 30

Nhng lp ny hot ng nh l mt lp bao bc cho lp Computer, iu ny c ngha l
phi c mt bin lu tr mt i tng computer. Mt cch n gin to lp bao bc
wrapper l m rng lp Computer.

To dng mt Lp trang tr Decorator

Bn c th bt u bng vic to mt lp tru tng c m rng t lp Computer ( nh
rng lp tru tng s khng th s dng trc tip c, bn phi k tha t lp ny, v
to ra lp mi s dng). y l m ngun:



Lp mi ny, ComponentDecorator , c mt phng thc tru tng tn description. Bi v
lp ny l tru tng nn bn khng th to i tng t n. iu c ngha l bn
chn chn mi lp bao bc wrapper k tha t lp ny phi nht qun, v khi mi lp k
tha s c mt phng thc description ring khc nhau.

Thm vo mt a cng Disk

y l lp bao bc Disk , s thm mt cng vo my tnh. Lp ny s m rng t lp tru
tng ComponentDecorator



Bi v y l mt lp bao bc, n cn phi bit ang bao bc th g. V vy bn a cho n
mt i tng computer ngay khi n khi to. Lp bao bc Disk s lu tr mt i tng
tn computer



By gi bn cn hin thc phng thc Description. (Lu : khi bn k tha mt lp tru
tng trong Java, bn cn hin thc tt c cc phng thc tru tng ca lp ). Phng
thc mi ny s gi phng thc description ca lp computer v thm vo dng ch and a
disk nh sau:
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 31




Vy l bn bao bc i tng computer, v khi bn gi phng thc description ca i
tng disk ny, n s gi phng thc description ca lp computer, ng thi thm vo
dng ch and a disk. Kt qu bn s c computer and a disk

Thm vo mt CD

Bn cng c th thm vo mt CD theo cng cch trn. y l m ngun



Thm vo mt mn hnh monitor

Tt nhin bn cng c thm vo mt mn hnh theo cng mt cch nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 32



OK. Bn c y cc lp. Gi l lc chy th nghim chng trnh.

u tin bn to i tng computer nh sau:



Sau bn bao bc i tng computer thm vo mt a cng



By gi hy thm vo mt monitor:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 33



Sau , bn c thm vo khng ch mt CD, m l hai CD chng hn. Khng vn g
kh khn c. Cui cng bn gi phng thc description ca lp bao bc xem kt qu:



OK. Khi chy chng trnh bn nhn c kt qu.



Khng ti. Bn m rng mt i tng gc tht n gin bng cch bao bc n trong
nhiu lp trang tr decorator khc nhau, trnh vic phi chnh sa trong m ngun gc. V
l Mu Thit K Trang Tr Decorator.

CI TIN TON T NEW VI MU THIT K NH MY
FACTORY

Ti y, cng ty MegaGigaCo, bn c tr gi cao cho k nng thit k mu chuyn nghip
ca mnh, bn ang to mt i tng kt ni c s d liu mi. Hy xem ton t new trong
Java lm vic ny nh th no?



Khng ti, bn ngh, sau khi hon thnh on m vic lp OracleConnection. By gi bn
c th kt ni vi c s d liu Oracle.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 34

Nhng, Gim c iu hnh la ln ,lm th no kt vi my ch c s d liu Microsof
SQL Server?

c, bn ni Bnh tnh, ti suy ngh mt lt. Bn ra khi phng n tra v sau
quay li tm gim c v ban qun tr. Mi ngi nng lng ch i v hi Mi vic xong
cha?

Bn tr li lm vic v to ra mt lp mi dng kt ni c s d liu, lp
SQLServerConnection.



Tt lm V gim c ni. Umh, vy lm sao kt ni vi MySQL? Chng ta mun n l
kt ni mc nh. Woa, bn hi bi ri. Tuy nhin bn vn lm thm mt kt ni vi
MySQL nh sau:



Hin ti bn c ba loi kt ni c s d liu nh sau: Oracle, SQL Server v MySQL. V
vy bn chnh sa m ngun cho ph hp vi cc bin nh Oracle, SQL Server hay bt
c bin no khc nh sau:



Mi vic u n, bn ngh. Tuy nhin c ti 200 ch trong m ngun cn phi to kt ni c
s d liu. V vy ti lc a on m ny vo mt phng thc ring, phng thc
createConnection, qua truyn cho n loi kt ni m bn mun nh sau:



Phng thc c th tr v loi kt ni mong mun, ty thuc vo gi tr tham s truyn
vo:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 35



Tuyt, bn ngh. Khng c g kh khn y.

Tin xu V gim c ni ln trong khi chy o vo phng lm vic ca bn. Chng ta cn
phi chnh sa li m ngun x l cc kt ni an ton cho tt c my ch c s d liu.
Hi ng qun tr ca khu vc Western yu cu nh vy

Bn a v gim c ra khi phng v ngi suy ngh. Tt c m ngun chc phi chnh sa
li. Phng thc mi createConnection, phn chnh ca m ngun, s phi chnh sa li.

Trong chng II ca quyn sch ny. Bn c bit du hiu phi s dng mu thit k:
l tch ri phn m ngun d thay i nht ra khi phn m chnh ca bn. V c gng
s dng li nhng phn ny cng nhiu cng tt.

C l y l lc ngh v vic tch ri phn m ngun d thay i ra khi chng trnh chnh,
phn to kt ni c s d liu connection, v ng gi n vo mt i tng. V i tng
chnh l mu nh my Factory. i tng l mt nh my, c vit trong m ngun,
nhm to ra cc i tng kt ni connection.

V sao bn ngh ti mu thit k nh my Factory. y l nhng gi :

Bn s dng ton t new to i tng OracleConnection
Sau li s dng tip ton t new to i tng SQLServerConnection, v sau
l MySQLConnection. Ni cch khc, bn s dng ton t new to nhiu i
tng thuc cc lp khc nhau, iu ny lm m ngun ca bn tr nn ln hn v
bn buc phi lp li iu ny nhiu ln trong ton b m ngun.
Sau bn a on m vo trong mt phng thc
Bi v yu cu vn cn c th thay i nhanh chng, nn cch tt nht l ng gi
chng vo mt i tng nh my factory. Theo cch lm ny, bn tch phn m
d thay i ring bit ra v gip phn m ngun cn li gi vng nguyn tc ng
cho vic sa i

Chng ta c th ni rng, ton t new vn tt trong mi trng hp, nhng khi m to
dng i tng b lin tc thay i, ta nn ngh n vic ng gi chng bng mu thit k
nh my factory.

XY DNG MU NH MY FACTORY U TIN

Nhiu lp trnh vin bit cch thc m i tng nh my factory lm vic. H ngh n gin
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 36

rng, bn c mt i tng lm nhim v to ra i tng khc. l cch m i tng
factory thng c to ra v s dng, tuy nhin n cn lm c nhiu hn th. Chng ta
hy nhn vo cch thng thng khi to mt i tng nh my factory trc, sau xem
xt nh ngha chnh xc t sch ca GOF, theo nh ngha m i tng nh my factory s
c nhiu im khc, nhiu s uyn chuyn hn.

To dng i tng nh my Factory

V d u tin, FirstFactory, s lm vic theo cch hiu thng thng nht. Lp FirstFactory
ng gi i tng xy dng connection, v bn truyn gi tr tham s theo ng loi mun
to l Oracle hay SQL Server hay loi g khc. y l cch bn to mt i tng s
dng nh my factory :



By gi, bn c th s dng i tng nh my factory mi to ny, to i tng kt
ni connection, bng cch gi phng thc tn createConnection nh sau:



Vy bn to lp nh my FirstFactory nh th no? Hy xem m sau:



u tin bn truyn kiu kt ni vo phng thc khi to ca lp FirstFactory.

Lp FirstFactory cha ng mt phng thc createConnection dng to ra mt i
tng kt ni connection tht s. y l ni bn phi chnh sa m ngun nhiu nht ty
theo loi kt ni mun to, m nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 37



Kt qu, bn c mt lp nh my factory.

To mt lp kt ni Connection tru tng

Hy nh rng mt trong nhng mc tiu ca chng ta khi vit m, l lm sao vic thay i
phn chnh ca m ngun cng t cng tt. Vi mc tiu , hy nhn on m sau lm vic,
khi ta s dng mt i tng connection c to bi i tng nh my factory:



Bn c th thy rng, i tng kt ni connection c to bi nh my factory, c s
dng khp ni trong m ngun. s dng cng mt on m cho tt c cc loi kt ni
khc nhau (Oracle,MySQL...), on m cn phi c vit theo tnh a hnh, c ngha l
tt c cc i tng connection, u c cng mt giao din interface, hay cng k tha t
mt lp c s. Theo cch , bn c th s dng cng mt bin cho mi loi i tng kt
ni.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 38

Trong v d, ti to mt lp tru tng connection, cc lp khc k tha n. Lp ny
gm mt phng thc khi dng, v mt phng thc description ( tr v m t ca loi i
tng ). M nh sau:



OK. Mi vic c v tt p. By gi bn to mt lp tru tng c s cho cc lp kt ni
khc k tha. Bn cn phi k tha tt c cc i tng kt ni connection to ra t lp nh
my factory.

To lp k ni connection

C ba lp kt ni connection m nh my Factory c th to ra, ph hp vi loi kt ni m
V gim c mong mun: OracleConnection,SqlServerConnection,MySQLConnecti on. Nh
chng ta va ni, cn phi k tha t lp tru tng va to. V mi loi trong chng u
c phng thc decription tr v m t ca tng loi kt ni mt. y l m ngun ca lp
OracleConnection:



y l lp SqlServerConnection, cng k tha t lp tru tng Connection:



Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 39

V lp MySqlConnection cng tng t:



Tuyt vi. Mi vic hon tt. Gi l lc th nghim chng. u tin ta to lp nh my,
truyn tham s khi dng l Oracle:





kim tra li i tng connection c to c phi l Oracle khng, ta gi phng thc
description nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 40



Kt qu bn nhn c



Khng ti. l nhng g bn mong i.

Ghi nh:Theo sch GoF, mu thit k phng thc nh my Factory Method c nh
ngha nh ngha mt giao din to mt i tng, nhng cho php cc lp con quyt
nh cch thc th hin n. Phng thc nh my Factory cho php mt lp tr hon vic
hin thc ca n qua cc lp con

im mu cht y l phn lp con quyt nh. Cho ti by gi, lp nh my Factory
m bn va to, vn cha cho php cc lp con quyt nh cch th hin, tr vic cho k
tha v ghi li phng thc ca lp Connection c s.

Mu thit k phng thc nh my Factory Method ca GoF em n cho bn kh nng
uyn chuyn hn phng php truyn thng rt nhiu. Cch lm ca GoF l: bn nh ngha
cch phng thc nh my Factory lm vic, v cho php cc lp con hin thc implement
mt nh my factory tht s.

Chng ta ni rng, Hi ng qun tr khu vc Western bt ng gi in v yu cu h
khng thch lp nh my FirstFactory, h mun c th to ra cc kt ni bo mt n my
ch c s d liu, khng ch l mt kt ni thng thng. iu ny c ngha l h phi vit
li lp nh my FirstFactory mi khi bn thay i n, h c th to ra mt kt ni bo
mt.

y l vn ca cc lp trnh vin. Mi khi bn cp nht li lp FirstFactory, cc lp trnh
vin khc phi vit li m ca h thch hp vi yu cu ca h. H ang gi v yu cu
rng h mun kim sot c qu trnh nhiu hn.

Tt thi, bn ni. chnh l vn mu thit k Factory p dng, giao quyn kim sot
cho cc lp con. thy cch mu ny hot ng, bn thay i cch to i tng kt ni
connection, s dng k thut ca GoF, bn s lm cho khu vc Western ca cng ty
MegaGigaCo hi lng.

Gi : Bn vn cn bn khon v cch s dng ca mu nh my Factory ca GoF? Mu
Factory c s dng khi bn mun chuyn giao ton b quyn iu khin cc lp con cho
cc lp trnh vin khc.
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 41


TO MT NH MY FACTORY THEO CCH CA GoF

Lm cch no cho php cc lp con ton quyn hin thc cch lp con th hin khi to
mt i tng nh my factory. Cch m bn phi lm l nh ngha lp nh my factory
nh l mt lp tru tng abstract hay giao din interface, v cho cc lp con hin thc
implement n.
Ni cch khc, bn to ra mt khung sn cho lp nh my Factory ti tr s ca
MegaGigaCo, v vic hin thc lp ny s do cc lp con m nhim.

To lp nh my tru tng factory

Vic to lp tru tng factory rt d dng. Lp ny c gi l ConnectionFactory



Bn cnh mt phng thc khi dng rng, phng thc quan trng nht y l phng
thc nh my createConnection. Ta phi lm cho phng thc mang tnh tru tng, cc
lp con hin thc n. Phng thc ny nhn mt i s, l loi kt ni cn to:



V l tt c nhng g bn cn. S c t cho i tng nh my factory. By gi khu va
Western s hi lng v h c th hin thc mt i tng nh my c th thch hp vi h t
lp tru tng trn.

To mt lp nh my factory c th

Bn bay ti khu vc Western ca cng ty MegaGigaCo, gip h x l vn to i
tng. Bn gii thch Ti hiu rng cc anh mun c quyn iu khin nhiu hn i vi
cc i tng kt ni

Vng cc lp trnh vin ca Western ni. Chng ti mun c th lm vic vi cc kt ni
bo mt. Chng ti to mt vi lp mi, lp SecureOracleConnection,
SecureSqlServerConnection v SecureMySqlConnection to ra cc kt ni bo mt.

OK bn ni. tt c nhng g cc bn phi lm l m rng lp tru tng mi ca ti, tn
l ConnectionFactory khi cc bn mun to i tng nh my factory cho cc bn. Hy
chc chn l cc bn s hin thc phng thc createConnection. Sau bn c th ty
vit m cho phng thc createConnection to i tng theo ng cch bo mt m
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 42

bn mun

Cc lp trnh vin ca Western ni. Wa, tht d dng. Chng ti s to lp factory mi vi
tn SecureFactory, v n s k tha t ConnectionFactory nh sau:



Tip theo, cc lp vin ca khu vc Western ni Chng ch cn hin thc lp
createConnection m lp tru tng ConnectionFactory yu cu:



Cui cng, cc lp trnh vin ni chng ta ch cn to cc i tng t cc lp va to,
lp SecureOracleConnection, SecureSqlServerConnection v SecureMySqlConnection, ty
thuc vo kiu d liu c truyn vo hm createConnection:



Tht n gin H ni.

S khc bit gia cch to mu nh my factory thng thng v cch ca GoF l cch ca
GoF ch c t lp nh my factory v cho cc lp con x l ni dung chi tit.

To cc lp kt ni bo mt

hiu r cch thc GoF to mu factory, bn cn to cc lp c th cho i tng nh
my connect mi, lp SecureOracleConnection, SecureSqlServerConnection v lp
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 43

SecureMySqlConnection. Tht d dng to chng ,bt u t lp
SecureOracleConnection, vi hm description tr v vn bn Oracle Secure:



Tip theo l lp SecureSqlServerConnection, vi hm description tr v vn bn SQL
Server Secure



V lp SecureMySqlConnection, vi hm description tr v vn bn MySql Secure:



Vy l hon tt phn m ngun. Gi l lc cho chng trnh chy.

Thc thi chng trnh

kim tra m ngun, hy to i tng SecureFactory v s dng n to i tng
SecureOracleConnection. M nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 44



Tt c nhng g bn cn phi lm l s dng hm createConnection ca i tng nh my
factory to cc kt ni an ton. M nh sau:



Khi chy chng trnh, ng nh mong i, bn nhn c vn bn sau, chng t rng bn
ang s dng mt kt ni Oracle bo mt:



y cng l kt qu m bn nhn c t v d FirstFactory m chng ta ni trong phn
trc, ngoi tr mt iu l bn cho php khu va Western t mnh hin thc loi nh my
factory m h mong mun. Bn c t mt lp nh my bng cch to ra mt lp tru
tng hay mt giao din interface cc lp con s dng, v ngi khc s t mnh quyt
nh lp thc hin nh th no. Khng cn vic s dng mt i tng nh my c th,
nay tp hp cc lp con quyt nh vic th hin chng nh th no.

Download Source code vit bng ngn ng C#
- Decorator
- Factory
- Factory V2

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 45

CHNG V: T MT CHO TI NHIU -
MU DUY NHT SINGLETON V MU
FLYWEIGHT

Trong chng ny:

S dng mu duy nht Singleton
V d v Singleton
ng b ha loi b cc vn rc ri trong a lung.
Mt cch tt hn x l a lung
S dng mu hng rui flyweight

Trong kh nng l mt nh t vn lng cao ti MegaGigaco, bn phi x l cc s c v
hiu nng h thng. H thng hnh nh ngy cng chm chp hn. Cc lp trnh vin ni:

Hmm, bn ni, Ti lu cc bn rng chng ta ang c mt c s d liu ln, khong
20Mb

Vng, h ni.

Cng mt thi im, cc bn s dng bao nhiu i tng ny?

Khong 219, cc lp trnh vin ni

Tri, vy cc bn s dng 219 i tng 20Mb trong lc chng trnh hot ng? Bn ni.
Chng l khng ai thy c vn y ?

Khng, h ng thanh ni.

Bn ni vi h Cc bn s dng qu nhiu ti nguyn h thng. Cc bn c hng trm i
tng to ln m my tnh phi x l. Cc bn c tht s cn tt c chng?

Vng h ni.

Ti ngh l khng, bn ni. Ti s sa cha vn ny bng cch s dng mu duy nht
Singleton.

Chng ny ni v vic kim sot s lng i tng m bn phi to ra trong m ngun
ca mnh. C hai mu thit k c bit gip ch cho bn: mu duy nht Singleton v mu
hng rui flyweight.

Vi mu duy nht Singleton, bn lun ch c duy nht mt i tng cho mt lp c th
trong sut ng dng. Vi mu hng rui flyweight, bn cng c duy nht mt i tng
cho mt lp, nhng c mt cht khc bit y. Mt th thut c s dng y.

To mt i tng duy nht vi mu duy nht Singleton
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 46


Ti bt u vi mu Singleton v x l rc ri m lp trnh vin MegaGigaCo gp phi. H
mun chn chc rng ch to duy nht mt i tng cho mt lp c th mc cho ngi
khc c c gng to bao nhiu i tng i na.

Cc lp trnh vin ang to ra hng trm i tng Database trong m ngu62n, v rc ri l
tng i tng ny rt ln. u l gii php? Mu duy nht Singeton l cu tr li.

Mu duy nht Singleton chc chn rng bn c th khi to ch duy nht mt i tng cho
mt lp. Nu bn khng s dng mu thit k ny, ton t new nh thng s dng, s to
ra lin tip nhiu i tng mi nh sau:



Ghi nh: chc chn rng bn ch c duy nht mt i tng, mc cho ngi khc c
hin thc bao nhiu phin bn i na, hy s dng mu duy nht Singleton. Cun sch GoF
ni rng, mu Singleton m bo rng mt lp ch c duy nht mt th hin v cung cp
mt bin ton cc truy cp n

Bn s dng mu Singleton khi bn mun hn ch vic s dng ti nguyn (thay v vic to
khng hn ch s lng i tng) hoc khi bn cn phi x l mt i tng nhy cm, m
d liu ca n khng th chia s cho mi th hin, nh registry ca Windows chng hn.

Gi : Ngoi i tng bn ghi registry, bn c th s dng mu Singleton khi bn mun
hn ch s lng cc th hin c to bi v bn mun chia s d liu ca cc i tng
ny. V d nh khi bn c mt i tng ca s window hay hp thoi dialog, cn phi hin
th v thay i d liu, bn s khng mun to nhiu th hin ca i tng ny, v bn s
b bi ri trong vic phi truy cp d liu ca th hin no.

Vic to mt i tng duy nht cng rt quan trng khi bn s dng a lung v khi bn
khng mun s ng d liu xy ra. V d bn ang lm vic vi mt i tng c s d
liu, v cc th hin khc cng lm vic trn cng c s d liu , vic ng c th gy
ra cc vn nghim trng. Ti s tho lun cch lm vic vi mu Singleton v a lung
trong chng ny.

Bt c khi no bn tht s cn duy nht mt th hin ca mt lp, hy ngh ti mu
Singleton ( thay v dng ton t new ).

Mt lp c s d liu Database da trn kiu Singleton
bt u vit mt t m ngun. Bn s to mt lp tn Database m cc lp trnh vin
trong cng ty s s dng. Lp ny c mt hm khi dng n gin, nh m sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 47



Bn cn phi thm vo hai hm editRecord, cho php bn chnh sa mt bn ghi, v hm
getName, tr v tn gi ca Database.



Ti gi mi vic vn tt p. Bt c khi no bn to mt i tng bng ton t new, mt
i tng mi s c to ra. Nu bn to 3 database, bn s c 3 i tng nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 48



Lm sao bn c th trnh vic to mt i tng mi khi s dng ton t new? y l
mt gii php lm cho hm khi dng ring t:



iu ny ngn cn mi ngi s dng hm khi dng, ngoi tr chnh trong lp ny gi ti.
Nhng i mt cht, c g khng n y? Ai trn tri t ny li cn c mt hm khi
dng ring t vy?
Vy lm sao bn c th to mt i tng khi bn khng th gi hm khi to n?

Bn lm cho hm khi dng tr nn ring t v cch duy nht phn cn li ca th
gii khi to i tng l thm vo mt hm to i tng, v gi n khi bn chn chn
mun to mt i tng duy nht cho lp ny.

Hy xem on m sau:



OK. u tin bn ngn chn vic khi to bng ton t new. V by gi cch duy nht l
to mt hm trong lp gi vic khi to i tng, thng thng hm ny c tn
getInstance (hay createInstance hoc mt ci tn c th nh createDatabase cng c).
Ch rng hm ny c gn phm vi cng cng v ton cc bn c th truy cp ti n
thng qua tn lp ( v d nh Database.getInstance()) (ND: public v static s gip cho
hm cng cng v ton cc, xem li cc khi nim OOP )

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 49



Hm ny s tr v mt i tng Database, nhng hm ch hot ng khi c t nht mt i
tng tn ti. V th u tin ta cn kim tra i tng ny, ti gi n l singleObject,
xem n tn ti cha? Nu cha, ti s to n. V sau tr gi tr n v cho hm.



Vn c gii quyt. By gi ch c duy nht mt i tng Database tn ti trong
cng mt thi im. ( Vn a lung ta s gii quyt trong phn sau ca chng). Vic
gi hm getInstance s cho ta mt i tng nh hnh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 50



Khi bn gi getInstance ln na, bn s nhn c cng mt i tng nh ln u.

Khng quan tm n vic bn gi bao nhiu ln getInstance, bn lun nhn c cng mt
i tng. chnh l cch bn phi lm vi mu singleton.

Chy th v d vi mu Singleton

Bt u bng vic to mt i tng Database vi tn l products, sau gi hm
getName:



Sau bn tip tc to mt i tng Database vi tn l employees, v gi li hm
getName kim tra:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 51



Tuy nhin i tng Database c to, v vy trong ln th hai, hm getInstance vn
tr v i tng Database c, v kt qu l bn nhn c thng bo:



Qu r rng. Bn nhn c duy nht mt i tng cho d thc hin vic to hai
ln. Cch thc bn lm vic nh sau: ngn cn vic khi to bng ton t new, v to mt
hm mi to i tng theo bn. chnh l cch mu Singleton hot ng.

ng qun vn a lung

Hy xem hm getInstance trong v d trn:



C mt l hng tim tng y, nh nhng l mt l hng r rng, l khi lm vic vi a
lung. Hy nh rng, bn mun m bo rng ch c duy nht mt i tng Database tn
ti. Nhng khi bn c nhiu lung chng trnh chy cng lc, bn s gp rc ri. C th l,
hy ch on m kim tra s tn ti ca i tng Database:


Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 52


Nu c hai lung cng thc hin hm kim tra ny mt lc, hai lung ny u tha iu
kin ca hm if ( tc cha c i tng no c to), v iu ny c ngha l c hai lung
u to ra mt i tng Database.

Lm sao chnh sa ch ny? Mt cch d dng l s dng t kha synchronized ( ng
b ) trong Java, xem on m sau:



S dng t kha synchronized s kha vic truy cp vo hm getInstance, trong khi hm
getInstance c chy. Bt c lung no mun gi hm getInstance, u phi i hm ny
hot ng xong. S dng k thut ng b ha synchronized l cch d nht thc thi
vic n lung trong gi hm, v k thut ny gii quyt c vn a lung.

Chy th chng trnh vi gii php ng b ha:

Bi v vic gi hm getInstance c ng b ha, bn c gi hm t nhiu lung khc
nhau. Xem m sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 53



on m cng cho php chy mt tin trnh mi c gng to mi mt i tng
DatabaseSynchronized:



Tin trnh mi c gng to mt i tng mi DatabaseSynchronized vi tn employees.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 54



Nhng nh bn c th nhn thy, khi chng trnh thc thi, ch duy nht mt i tng
DatabaseSynchronized tn ti. l i tng products.



K t khi bn s dng k thut ng b ha trn hm getInstance, bn khng cn lo lng
v vn a lung na. Ch duy nht mt lung c gi hm getInstance. N ngn chn
vic to i tng bng mt bc tng an ton, vic kim tra trn cho thy, nu i
tng mun to tn ti, hm s khng to, ngc li, s to i tng cho lp.

Thot nhn, iu ny tht tuyt vi, ng b ha hm getInstance v gii quyt c vn
a lung, bo v m ngun chng li vic xung t khi c nhiu tin trnh cng to mt i
tng.

Tuy nhin, vn cn mt cu hi, vic ng b ha gii quyt vn , nhng c phi l
cch tt nht. Vic ng b ha gy tn ti nguyn h thng, Java buc phi theo di tng
tin trnh cho x l khi no th cho php tin trnh truy cp hm getInstance, khi no th
khng cho php.

ng b ha hm getInstance lm vic, nhng vi chi ph ng k. C cch no tt hn
gii quyt vn ny?

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 55

Ti u ha vic x l a lung

Vn khi bn c gng x l t kha synchronized l on m kim tra vic to i tng
s b ph hng bi cc tin trnh khc. Mt cch tt hn lm vic ny l m bo rng
on m kim tra khng cn quan trng na.

Mi vic th no?Cc lp trnh vin hi trong kinh ngc. Nu bn khng kim tra vic to
i tng, lm sao bn c th chc chn l bn khng to thm mt i tng mi?

Bn gii thch Bng cch loi b ton b m to i tng ra khi hm getInstance. Ti s
vit li m chc chn ch mt i tng c to ra. V i tng s c to ra trc
khi bt c lung chng trnh no c th nm bt c n.

Hmm, cc lp trnh vin ni Nghe c v n s hot ng

y l tng To i tng duy nht m bn mun ngay khi m ngun c np ln
u tin vo
Java Virtual Machine (my o Java, b my bin dch v thi hnh Java). Khng hm
getInstance to i tng na. Ch cho php hm tr v i tng va to. M nh sau:



Tt, gi bn to i tng duy nht ri. Tt c nhng g cn lm l cho hm getInstance
tr v i tng ny

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 56



Nh cc bn c th thy, tht n gin, i tng singleton c to ra trc khi bt c
lung chng trnh no c th nm bt c. Tuyt vi.

Cch lm vic ca gii php x l tin tin trnh

Chng trnh trn c hot ng khng? Nh vi gii php ng b ha, bn c th phin
bn ny lm vic bng cch to i tng DatabaseThreaded bng cch gi hm
getInstance

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 57



V bn c th s dng mt tin trnh khc c gng to ra mt i tng
DatabaseThreaded khc.



V khi chng trnh hot ng. Bn thy rng bn ang nhn c cng mt i tng.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 58



y l gii php tt hn vic ng b ha hm getInstance. Khng th to nhiu hn mt
i tng, nn s trnh c s xung t gia cc lung chng trnh. Bn g b m
ngun ng b ha bng cch a chng ra hi hm getInstance.

Ch : Nu bn s dng Java vi phin bn nh hn 1.2, c mt rc ri vi trnh thu dn
rc. Nu khng c mt tham chiu vi i tng singleton, trnh thu gom rc s thu gom
lun i tng ny. Li ny c sa li trn phin bn 1.2

C mt vn cn ch . Nu bn s dng b np a lp v s dng i tng singleton,
bn s gp li. Bi v mi lp s dng mt khng gian tn khc nhau, bn c th i mt vi
vic to nhiu i tng singleton. V th khi bn s dng nhiu lp, hy chc chn rng m
ngun c kim tra i chiu gia cc lp, m bo rng ch c duy nht mt i tng
singleton tn ti trong mt thi im.

Mu hng rui flyweight gip cho mt i tng trng
ging nhiu i tng

Mu singleton ni v vic to mt i tng duy nht. C mt mu thit k khc cng hn
ch vic to i tng, nhng ln ny n s em n mt cch thc khc trong vic vit
m. l mu hng rui flyweight.

Mu thit k ny gi l hng rui flyweight nguyn do thay v phi lm vic vi nhiu i
tng c lp, to ln, bn gim bt kch thc chng bng vic to mt tp hp cc i
tng dng chung nh hn, gi l flyweights m bn c th ci t vo lc thc thi chng
trnh chng trng ging nh nhng i tng ln hn. Mi i tng to ln c th tiu
tn nhiu ti nguyn h thng, bng cch tch nhng im ging nhau ca cc i tng
ny, v da trn vic cu hnh thi gian thc m phng li cc i tng ln, bn lm
gim bt gnh nng ln ti nguyn h thng.

Bn c th em nhng phn ring bit ra khi m ngun ca nhng i tng to ln v to
ra nhng i tng flyweight. Khi lm iu ny, bn chm dt vic s dng nhiu i
tng c chung cc c im, v gim xung vic ch s dng mt i tng, c th ci t
khi chng trnh thc thi, m phng li c tp hp cc i tng to ln ban u

Ghi nh: Sch GoF nh ngha mu flyweight nh sau: S dng vic chia s gip
cho vic x l cc i tng ln mt cch hiu qu H cng ni rng: Mt mu flyweight l
mt i tng chia s m c th s dng trong ng thi nhiu ng cnh. Mu flyweight
hot ng nh mt i tng c lp trong mi thi im.

y l nhng g din ra. Bn bt u vi mt tp hp nhiu i tng to ln trong m
ngun. Bn g b nhng phn dng chung, ng gi chng vo mt i tng chia s, mt
flyweight, i tng ny hot ng nh mt khun mu. i tng khun mu ny c th
c ci t vo lc thc thi chng trnh bng cch chuyn cc c im dng chung vo
i tng flyweight n xut hin ging nh mt hay nhiu i tng ln ban u. Bn c
th thy nh hnh v sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 59



T nhng i tng to ln, bn to mt i tng nh hn gi l flyweight (trong v d ny
l mt flyweight, ty nhin ty thuc vo ng dng m bn c th c nhiu flyweight), m
bn c th ci t vo lc chng trnh hot ng nh hnh sau:



Bt c khi no bn phi x l mt lng ln cc i tng, mu Flyweight s xut hin
trong tm tr bn. Nu bn c th tch nhng ni dung ging nhau cn thit t nhng i
tng ny, v to mt flyweight, hoc nhiu flyweight, m hot ng ging nhng khun
mu, th chnh l cch mu flyweight hot ng

V d rng, cng v mt chuyn gia thit k mu, bn c chn ging dy v mu
thit k cho mt lp hc. Chng trnh m bn cn c theo di h s hc vin cho tng
hc vin c th l nhng i tng tht s ln. Bn quyt nh n lc tit kim ti
nguyn h thng. l cng vic ca mu Flyweight.
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 60


To mt hc vin

to m ngun cho mt i tng hc vin, bn quyt nh ci t n nh mt i tng
Flyweight vi tn Student. i tng ny c cu hnh sao cho trng ging nhiu hc vin
m bn mun. V vy bn thm vo cc hm thit lp thng tin v tr thng tin, chng hn
tn hc vin, m s, v im.

Bn cng c th mun so snh hc lc ca cc hc vin vi nhau, nn bn thm mt hm
getStanding, c th tr mi tng quan ca hc lc hc vin v im trung bnh . M nh
sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 61



Lu rng hm getStanding s tr v s khc bit phn trm im s ca sinh vin so vi
im trung bnh.

Chy th mu Flyweight

s dng mu flyweight, bn phi lu tr d liu m bn mun cu hnh cho flyweight.
Trong trng hp ny bn mun ci t cho i tng Student ging nh mt tp hp cc
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 62

hc vin c tht, v vy bn c th lu tr d liu sinh vin ( nh tn, m s, im ) bng
mt dy nh sau:



so snh hc vin ny vi hc vin khc, bn cn xc nh im trung bnh ( tng im
chia cho s sinh vin ), m nh sau:



Trong v d ny, bn cn duy nht mt i tng flyweight Student, bn s truyn gi tr
im s trung bnh qua hm khi dng ca Student nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 63



By gi bn phi ci t i tng flyweight theo mun, thay v phi to tng i tng
ring bit cho tng sinh vin mt. Hy xem cch thc vng lp sau thc hin:



Chy m trn v bn nhn c kt qu mong mun. i tng flyweight c cu hnh
cho tng hc vin, th hin c tn v xp hng:
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 64




Thay v s dng ba i tng y , bn ch cn s dng mt i tng. Cng gn ging
mu Singleton, tuy nhin tng ng sau mu Flyweight l kim sot vic to dng i
tng, v s lng i tng theo bn mun.

X l vn a lung

Mu flyweight c s dng kim sot vic to dng i tng, nhng bn lu rng n
cng b chung mt vn vi mu Singleton m chng ta nhc ti. Nu m ngun ca
bn c s dng a lung, bn c th trnh vic to ra qu nhiu i tng flyweight bng
cch tch ri qu trnh to i tng ra khi ton t new nh tng lm vi mu
Singleton. Bn c th to i tng flyweight ngay khi lp c np ln u tin, ngn cn
vic truy xut hm khi dng bng cch gn cho n mt truy cp cc b, v cho php vic
to i tng thng qua hm getInstance.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 65


Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 66


V d sau, cho thy khi lm vic vi phin bn mi, vic x l a lung c gii quyt



Chy on m trn, kt qu nh sau, bn s nhn c cng mt i tng khi chy cng
lc hai lung:



Ch : Vy s dng mu flyweight c hn ch no khng? Vn chnh l bn s mt
thm thi gian ci t mt i tng flyweight v nu bn phi ci t bao bc mi th,
bn c th s lm gim hiu nng h thng nhiu hn mong i. Mt hn ch na l: bi v
bn tch mt lp mu chung ra khi i tng to flyweight, bn phi thm vo mt lp
khc trong vic lp trnh, v c th gy ra s kh khn trong vic bo tr v m rng.

Download source code vit bng C sharp ti y
Flyweight
Singleton
Singleton Multi Threading

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 67

Chng VI: A MT CI CHT HNH
TRN VO MT L HNH VUNG VI
MU CHUYN I ADAPTER V MU
HNH DNG FAADE

Trch dn:
Trong chng ny:
- S dng mu chuyn i Adapter
- To mt adapter
- Chuyn i mt i tng Ace thnh i tng Acme
- X l cc rc ri vi vic chuyn i
- S dng mu faade
i khi mt i tng khng thch hp vi nhng g ta mong mun. Mt lp c th thay i,
hoc mt i tng tr nn kh khn khi s dng. Chng ny s l gii php tt cho vn
trn khi s dng hai mu thit k: mu chuyn i adapter v mu faade. Mu adapter
cho php bn chuyn i mt i tng cung cp cho mt lp khc c th s dng
chng. Mu faade cng tng t vy, n thay i v ngoi ca mt i tng, nhng c
mt cht khc bit: bn s dng mu ny n gin ha cc chc nng ca n, lm cho
n d lm vic vi i tng hay lp khc.
Kch bn ca mu Adapter

c, trng nhm pht trin MegaGigaCo ni, khi ang bc vo phng, Gi tt c mi
th, qun l ra lnh rng chng ta phi chuyn i c s h tng sang mt h thng
mi, h thng c bn bi cng ty con ca gim c

Hmm, cc lp trnh vin ni, l mt vn . Giao din khch hng trc tuyn ca
chng ta cho php khch hng s dng phn mm t cng ty Ace v ng gi chng trong
mt lp tn Ace. Lm sao chng ta c th chuyn i chng cho ph hp vi h thng
mi?

Ch c th l mt i tng Acme mi, trng nhm ni khng phi l i tng Ace

Oh, khng, mi ngi ni Lm sao c th nh vy c

Bn c th thy rc ri y. Hin ti, h thng ph hp vi mt i tng Ace nh hnh v



Nhng khi h thng thay i, n yu cu mt i tng Acme ( khng phi Ace), v vy i
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 68

tng Ace khng thch hp na. Xem hnh sau:



Ti c mt gii php. Bn ni. Mi ngi quay sang, v bn ni tip D nhin, vi t cch
l mt t vn vin, ti s tnh chi ph cao cho vic ny

OK, trng nhm ni.

Bn cn s dng mu chuyn i Adapter, bn gii thch, Mu adapter cho php bn
chuyn i mt lp hoc mt i tng sang mt lp hoc i tng mi m bn mong
mun. Bn v ra gii php ln tm bng nh hnh sau:



Ah c nhm pht trin phn mm ni Chng ti ang hiu ra vn

Tt bn ni Vy phi tr ph cho ti

Chnh sa rc ri khi kt ni vi mu Adapter:

Mu tht k Adapter cho php bn sa i mt giao din gia i tng v mt lp m
khng phi sa i trc tip ln chng. Khi bn lm vic vi mt ng dng mua sn, sn
phm bn nhn c thng khng tng thch vi nhng g bn tht s mun.
y l phn c bit quan trng trong pht trin trc tuyn. Ngy cng nhiu cc cng ty
to ra cc sn phm cho nhng cng ty ln, h ang b qua cc phn mm cho nhng cng
ty nh. V iu tht ng xu h v vic tng thch ca h thng, phn mm t cng ty
nh khng th giao tip vi mt hoc nhiu thnh phn khc trong ton h thng. Nhng
vic chuyn sang mt gii php t tin th khng phi lc no cng cn thit. Thng
thng, gii php c th l mt b chuyn i nh.

Cch tt nht xem mu Adapter lm vic l thng qua v d. Hin ti giao tip ngi
dng cng ty MegaGigaCo m ti nhc ti trong phn trc ca chng ny, d liu
ngi dng c ng gi trong lp Ace. Lp ny qun l tn ca khch hng, vi hai hm
sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 69



Nhng theo bn bit, cng ty MegaGigaCo ang chuyn sang s dng phn mm Acme, m
cch thc qun l khch hng c khc mt cht. Vn y l phn mm Acme cn mt
i tng Acme. i tng ny c ti bn hm, ch khng phi hai, dng qun l tn
khch hng. Chng l:



V vy bn cn mt b chuyn i chc chn rng h thng mi Acme c th x l c
i tng Ace. B chuyn i ny gi hai hm ca i tng Ace v m rng chng thnh
bn hm m i tng Acme yu cu, nh hnh sau:



y chnh l cch thc lm vic ca mu Adapter

Ghi nh: Sch ca GoF nh ngha mu Adapter nh sau: Chuyn i giao tip ca mt lp
sang mt kiu giao tip khc m khch hng mong mun. Mu adapter cho php cc lp c
th lm vic vi nhau cho d giao tip ca chng khng tng thch nhau

Thng qua nh ngha chnh thc ca mu Adapter ni v cc lp, mu ny bao gm hai
phn chnh nh sau: mt cho i tng, mt cho lp. Chng ta s xem xt c hai trong
chng ny.

Bn s dng mu Adapter khi bn c gng a mt ci cht hnh vung vo ci l hnh trn.
Nu mt lp c giao tip khng tng thch, bn c thm thm vo mt b chuyn i
ging nh b chuyn i in trong nhng chuyn du lch ton cu c th t c yu
cu mong mun
Mu ny c bit tt trong trng hp bn ang lm vic vi m ngun c m yu cu l
khng c thay i m c, trong khi phn mm giao tip vi m ngun c ny li thay i.
Gi n lc mu Adapter lm vic.

To mt i tng Ace:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 70

Trc khi cng ty con ca MegaGigaCo ph hng mi th trong phng bn, i tng Ace
ang qun l khch hng vi hai hm nh sau: setName v getName y l mt giao din
vi hai hm sau:


i tng Ace s c to ra t lp AceClass, lp ny hin thc giao din trn



Vi hai hm setName v getName n gin nh sau:



l tt c nhng g bn cn trong h thng c. Mt i tng Ace c tr v. Tuy nhin
hin ti, cng ty bn chuyn sang h thng Acme, h thng mi cn giao tip vi i tng
Acme. ( Mt ln na xin cm n cng ty con MegaGigaCo)

To i tng Acme

i tng Acme cn qun l tn khch hng vi bn hm sau: setFirstName, setLastName,
getFirstName v getLastName. y l giao din ca n, AcmeInterface. M nh sau:



i tng Acme c to t lp Acme, hin thc giao din AcmeInterface nh sau:
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 71




V y l bn hm ca lp Acme



Ti lc ny, bn c i tng Ace, v i tng Acme. By gi bn cn mt b chuyn
i gn i tng Ace v h thng mi Acme.

To i tung chuyn i Ace-to-Acme

Bn mun to mt b chuyn i gip cho ng dng c th lm vic vi i tng Ace (
cho d n mong mun mt i tng Acme), v vy bn phi to mt i tng chuyn i.
i tng chuyn i ny lm vic vi s kt hp composition ( xem chng hai bit
thm v kt hp composition) mt b chuyn i lu tr chnh i tng m n mun
chuyn i.
Tip tc vi v d trong chng ny, ti t tn cho b chuyn i l AceToAcmeAdapter v
bi v n trng ging mt i tng Acme, n s hin thc giao din AcmeInterface:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 72



B chuyn i ny s dng i tng kt hp composition lu gi i tng chuyn
i, l mt i tng AceClass. Bn c th chuyn i tng ny ti lp thng qua hm
khi dng. M nh sau:



im khc bit gia i tng Ace v Acme l i tng Ace cha tn khch hng nh l
mt chui duy nht, trong khi i tng Acme lu tr tn v h khch hng ring bit.
chuyn i gia i tng Ace v Acme, ti tch phn tn trong i tng Ace ra thnh tn
v h. Bn vn c th nhn c tn khch hng lu tr trong i tng Ace khi s dng
hm getName. M nh sau:



By gi bn c tn v h ca khch hng. tng thch vi i tng Acme, bn phi
hin thc cc hm ca Acme nh setFirstName, setLastName, getFirstName v
getLastName. M nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 73



Tuyt vi. Bn c mt b chuyn i. N lm vic ra sao?

Cho chy th b chuyn i:

Thng qua phn trn, bn chuyn i mt i tng Ace chng trng ging nh mt
i tng Acme. Gi l lc thy cch mu Adapter lm vic. Bt u bng vic to mt
i tng Ace cha thng tin khch hng tn Cary Grant.



Sau bn chuyn i tng Ace sang cho i tng AceToAcmeAdapter
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 74




V tip tc, bn c th s dng cc hm ca Acme nh getFirstName v getLastName mt
cch d dng, khng rc ri g:



Kt qu nhn c:



l nhng g bn mong mun khi bn s dng i tng Acme tht s. Bn s dng
mt i tng Acme t mt i tng Ace nh b chuyn i. l cch thc lm vic ca
mu Adapter.

Mt Adapter s dng mt composition lu tr mt i tng m n mun chuyn i,
v khi cc hm ca b chuyn i c gi, n s thay i cc hm trong i tng gc
sang cc hm ca i tng mi. on m gi mt b chuyn i s khng cn quan tm
ti cch thc lm vic ca b chuyn i, v b chuyn i thc hin bn trong v tr v
gi cn thit cho h thng.

S dng mt i tng kt hp composition bao bc i tng chuyn i l mt thit
k hng i tng tt, nh nhng g chng ta ni ti trong chng hai. V ch rng
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 75

nu bn k tha mt i tng adapter, b bao bc adapter s c th qun l cc i tng
k tha vi s thay i t nht.
N GIN HA CUC SNG VI MU FACADE

Mt mu thit k tng t vi mu Adapter l mu Faade. Hai mu ny lm vic theo cng
mt cch, nhng mc ch s dng ca chng khc nhau. Mu adapter chuyn i m
ngun lm vic c vi m ngun khc. Nhng mu Faade cho php bn bao bc m
ngun gc n c th giao tip vi m ngun khc d dng hn.

V d nh, c mt ngi thit k ra mt ci my in, v a cho bn mt cch t ho. Lm
sao my c th in? bn hi

u tin, anh ta ni vi bn, gi hm khi ng.

c bn ni. By gi n in cha?

Cha, bn phi gi turnFanOn

OK, gi n s in ch, bn hi

Cha, hy gi hm lm nng my warmUp

c ri. Gi n s in, phi khng?

Vn cha. Bn phi gi hm getData a d liu t my vi tnh ti my in

OK, hm getData. Cn g na khng?

Hm nh dng d liu formatData

V g na?

Hm kim tra u mc checkToner, hm kim tra giy checkPaperSupply, hm kim tra h
thng runInternalDiagnostic, hm

Khoan , bn ni, vy vit cho ti mt hm i din faade cho tt c ci ng ln xn
ny. Hm faade ny s gi tt c cc hm khc bn trong n, v n gin ha mt cch
ng k vic giao tip. Ch vy thi

l ci g?, ngi thit k my in hi

Hm in n print, bn ni. Ch cn gi hm in n print, v my in hot ng. Khng cn
lm g khc.

Hey, anh ta ni c th l mt tng tuyt vi. By gi bn c th thm mt hm
prepareToCallThePrintMethod , mt hm callThePrintMethod, mt hm cleanupAfterPrinting,
mt hm

Anh ng l ht thuc cha bn ni.

Mu thit k Faade to ra mt giao din OOP d dng s dng. N l mt vn thit
k c bn nu mt i tng hay mt lp qu kh giao tip, mu Faade to ra cho
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 76

bn mt giao din giao tip d dng hn. y l nh ngha chnh thc ca GoF v mu
Faade: Cung cp mt giao tip duy nht cho tp hp cc giao tip ca h thng. Faade
nh ngha mt giao tip cao hn gip cc h thng con d dng s dng

Thng thng, bn s dng mu Faade khi bn lm vic vi nhng m ngun c
ng gi mt cch cu th. Khng phi ai cng l mt chuyn gia OOP, v bn cng nhanh
chng thy c rng, khi bn lm vic trong mt mi trng pht trin phn mm thng
mi rng ln. Khi bn tr nn mt mi giao tip vi nhng giao din c thit k rc ri
v nhn thy rng, bn nhn c x,y thay v mt ci z n gin hn. l lc bn nn s
dng mt giao din mi.
(ND: t giao din trong cc on vn trn c nguyn vn ting anh l interface - cha c
ngha ting vit c th, c th hiu n l mt nn tng,cch thc giao tip gia cc i
tng)

tng rt n gin; mt faade lm n gin ha mt giao tip interface ( s dng ngha
chung ca t interface, khng phi giao din interface trong Java ) gia mt lp hay mt
i tng.



Bn thng s dng mu thit k Faade khi bn mun m ngun n gin hn nhng li
khng th chnh sa m ngun c. Thng qua vic s dng mu Faade bn c th gii
quyt vn , n thm vo mt lp khc bn trn, v nu m ngun ca lp bn di thay
i, bn cng phi thay i lun m ngun ca mu Faade.

C mt nh ngha OOP lm vic y, i khi cn c gi l Nguyn tc v s hiu bit t
nht , i lc c gi l Lut ca Demeter , i khi c gi l s ng gi hiu qu.
y l tng nng cao s hiu qu ca OOP, bn khng mun nhng thc th ring bit
(lp hay i tng) phi bit qu nhiu v nhau. Cng t cng tt, bn c th che du chi
tit ca tng lp hay i tng v lm cho s lin kt ca chng lng lo cng nhiu cng
tt. ( Xem chng bn bt thm v tho lng cc mi lin kt loose coupling) . Nu
mt i tng cn phi bit qu nhiu v i tng khc, chnh l lc cn s dng mu
Faade.

Ghi ch: Hy tho lng cc mi lin kt cng nhiu cng tt.

Lm vic vi mt i tng kh khn

y l mt v d minh ha cch thc mu Faade lm vic. Cng ty bn va mua mt cng
ty i th, ngi qun l ang rt hn hoan.

Hmm bn ni Chng ta ang gp rc ri vi vn tng thch?. Sn phm ca h qu
khc bit vi chng ta
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 77


Phi l, ng ch ln ni Mi vic khng th n gin hn

c, bn ni Lm sao ng c th t tn cho n

Khng th n gin hn. C gi hm setFirstNameCharacter. N s t k t u cho tn

OK, vy k t th hai ca tn th sao?

Ch cn gi hm setSecondNameCharacter. Khng th n gin hn

OK, ti tip tc. bn ni Vy t tn cho mt sn phm, ng gi hm
setFirstNameCharacter tht lp k t u tin cho tn, sau gi hm
setSecondNameCharacter thit lp k t th hai, v bng cch ng tip tc gi hm
setFiveMillionNameCharacter thit lp k th th nm triu cho tn?

Khng, ng ch ln ni Bn ch c th t tn vi by k t

, bn ni Khng th n gin hn

ng, ng ch ni

y l on m, sau khi bn hp nht vi sn phm ca cng ty mi, lp DifficultProduct



Bn t tn cho sn phm ny tng k t mt, s dng hm setFirstNameCharacter,
setSecondNameCharacter, setThirdNameCharacter, v hm cho k t th t, th nm nh
sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 78



V ly c tn sn phm, bn gi hm getName, tr v mt chui.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 79



y l cch to mt my in, t tn theo tng k t mt:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 80



Thy khng? ng ch ni khng th d dng hn

Qu cho s phi l bn ni Ti s vit mt mu Faade

To mt mu Faade n gin:

ng ch ng cch ca bn v bn bt u vit mt faade n gin nh sau:



Faade ny phi bao bc i tng (i tng DifficultProduct trong v d). Thng thng,
bn vit mt faade m cho php faade chnh sa giao din bn ngoi ca i tng. Bn
cng c th chuyn tham s cu hnh vo hm khi dng ca faade, nhng iu khng
cn thit trong v d ny, ta ch cn to mi i tng DifficultProduct nh sau:



Rc ri vi vic s dng i tng DifficultProduct nguyn thy l cch m ta thit lp tn
cho n, s dng vng v mt lot cc hm setFirtNameCharacter,
setSecondNameCharacter, setThirdNameCharacter v vn vn. sa cha , bn quyt
nh cung cp mt faade vi mt hm n gin l setName t tn cho i tng. M
nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 81



C mt hm khng cn dng Faade, l hm getName, m nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 82



By gi bn bao bc mt i tng kh giao tip v hp nht cc hm rc ri thnh hm
d s dng. Hy xem cch thc hot ng ca mu Faade

Chy th mu Faade

u tin to mt i tng SimpleProductFacade, sau thit lp tn i tng printer
vi hm setName v nhn li vi hm getName.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 83



V y l kt qu:



Bn chinh phc c i tng kh khn vi giao din kh s dng bng mt faade.

Cm n bn haihth dch

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 84

Chng 7: TO HNG LOT I TNG
VI MU TEMPLATE (Khun Mu ) V
MU BUILDER ( Th Xy )


Trong chng ny, chng ta s i qua:
S dng mu Template
To r bt s dng mu template
K tha mu template
Hiu bit s khc bit gia mu Template v mu Builder
S dng mu Builder

Tin tt, gim c GigundoCorp mt cng ty mi m bn ang nhn trch nhim t vn -
ni trong khi chy vo phng hp Chng ta nhn c hp ng

Hp ng no?, mi ngi hi

Hp ng v nhng con r bt t ng lp rp xe hi, v gim c ni.

, th ra l hp ng Mi ngi ni.

Gi th v phng v vit chng trnh thi, v gim c va ni v xua ui mi ngi ra
khi phng hp

Ch mt lt, bn ni Chng ta c nn dnh cht thi gian cho vn thit k khng? V
d: c kh nng chng ta s to mt loi khc ca r bt trong tng lai chng hn

Chc chn ri, v gim c ni. Chng ta c mt t h s d thu ngoi . Nhng khng
c thi gian ngh v n u. Chng ta cn phi bt u to nhng con r bt t ng trc

Vng, cc lp trnh vin rn r v mi ngi tr v phng ca mnh.

C iu g mch bo vi ti rng h ang mc phi sai lm, bn t nh trong cn
phng trng rng, ri rc nhng ly Styrofoam trng rng ln lc khp sn.

Chng ny ni ny v hai mu thit k gip bn c mt cch thc kho lo hn trong vic
to dng cc i tng: mu Template Method v mu Builder. Mu Template Method cho
php cc lp con nh ngha li cc bc to i tng, rt thch hp cho vic to ra cc
chng loi r bt khc nhau. Mu Builder gip bn uyn chuyn hn trong vic i tng v
n tch ri qu trnh khi to ra khi bn thn i tng. C hai mu s c tho lun
trong chng ny

To con r bt u tin

Cc lp trnh vin ca GigundoCorp xo nu ra phn mm ca h trong vi ngy v n
va n gin. Lp robot bt u vi mt hm khi to nh sau:
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 85




V c mt s hnh ng m robot c th thc hin, v d nh, khi ng robot, bn gi
hm bt u Start, robot lm vic, bn gi hm lp rp assemble, kim tra sn phm,
bn gi hm kim tra test, v vn vn.



V tt c nhng g bn cn l mt phng thc, tn l go here, n s lm cho robot lm
vic bng cch gi cc hm start, getParts, assemble, test v stop nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 86



Bn c th nhanh chng vit chng trnh kim tra. u tin to mt robot v gi hm go
nh sau:



V khi chy chng trnh, bn nhn c kt qu:
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 87




Tuyt vi, gim c iu hnh phn khch. Phn thng lun xung quanh. Ti ni
vi anh rng h khng cn ci th mu thit k v vn . Cc lp trnh vin ca cng ty
nm cho bn mt nh nhn d bu.

To Robot vi Mu thit k Template Method

Ngy tip theo, Tin tt, gim c iu hnh ca GigundoCorp la ln, trong khi phng vo
phng hp. Chng ta k c hp ng khc!

Hp ng khc no? Mi ngi hi

Hp ng cho robot nng bnh V gim c ni Gi th ra khi y v vit phn mm
cho n

Cc lp trnh vin nhn vo trong ly c ph ca h Chng ta phi vit li tt c phn mm
t u, h ni

V gim c lic mt nhn bn v hi C tn nhiu chi ph khng?

Rt nhiu, cc lp trnh vin ni. V bn th ang chng li s thc gic ni rng Ti
ni vi cc anh t trc

y l thi im thch hp ni v mu thit k Template Method. C mt rc ri m lp
trnh vin GigundoCopr i mt, h c mt con robot t ng nh hnh sau:



Nhng by gi h cn mt con robot nng bnh nh hnh sau, v th l phi vit li m
ngun t u



Con robot nng bnh c mt s chc nng ging nh con robot lp rp t, nh l hm
start, stop, tuy nhin n c nhng s khc bit nh lp rp assemble s khng hin th
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 88

Getting a carburetor m thay vo l Getting flour and sugar

l ni m mu thit k Template Method c p dng. Mu ny ni rng, bn c th
vit mt phng thc, dng xc nh mt lot cc thut ton, ging nh hm go m bn
thy trc y, chy mt lot cc chc nng cho robot nh hnh:



Sau bn a hm ny vo mt b khun template bng cch cho php cc lp con nh
ngha li cc bc thut ton theo cch cn thit. Trong trng hp ny, lm mt con
robot nng bnh, bn s vit li cc hm getParts, assemble, v test.

Theo nh ngha chnh thc ca sch GoF, mu Template Method nh sau: nh ngha mt
b khung ca mt thut ton trong mt chc nng, chuyn giao vic thc hin n cho cc
lp con. Mu Template Method cho php lp con nh ngha li cch thc hin ca mt thut
ton, m khng phi thay i cu trc thut ton.

iu ny c ngha l bn nn s dng mu Template Method khi bn c mt thun ton
c to bi nhiu bc, v bn mun th ty chnh mt s bc trong . Ch rng nu
bn mun vit li mi th t u khi mi bc u phi ty chnh li th bn khng cn
dng template.

To robot bng b khun Template

Nu bn c mt b khun Template da trn robot, bn c th cho n k tha nh hnh
sau:



Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 89

Bng cch gi hm go, tp hp cc thut ton s c thc hin. ty chnh trong lp k
tha, bn ch cn vit li mt s bc no bn mun, trong trng hp robot nng bnh s
nh hnh sau:



l tng ng sau mu thit k Template Method Mt chc nng bao gm nhiu
bc s c ty chnh bi lp con. Trong trng hp bn cn hai robot, mt robot lp rp
t, mt robot nng bnh, mi vic s nh th no?

Bn bt u bng cch to mt b khun Template trong mt lp tru tng abstract (
lp khc c th k tha n), gi l RobotTemplate



V lp ny cng ci t vic thc hin mc nh cho tng chc nng trong hm algorithm,
start, getParts, assemble, test v stop.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 90



Nu mt con robot s dng ng cc phng thc ny, v d nh hm start v stop, chng
ta khng cn phi vit li chng. Ngc li bn c th thay i cc phng thc ny trong
cc lp con.

V d, bn c th s dng RobotTemplate to mt con robot lp rp t. Bn c tha k
t lp tru tng RobotTemplate trong mt lp mi, lp AutomotiveRobot.

Code:
public class AutomotiveRobot extends RobotTemplate
{
...

}
Robot lp rp t ny phi vit li mt s hm ca RobotTemplate nh hm getParts s
thng bo Getting a carburetor, hm assemble s thng bo Installing the
carburetor, v hm test s thng bo Revving the engine. Bn thy , bn c th ty
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 91

chnh cc bc trong mt thut ton c cung cp bi mt b khun template.



Bn cng c th ty chnh m ngun da trn template bng cch thm vo mt s hm, v
d nh hm khi to s nhn tn ca con robot, v hm getName s tr v tn ny.



Tuyt vi. Bn k tha phng thc go t template, v ty chnh n cho robot lp rp
t.
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 92


Bn cng c th ty chnh hm go k tha t template, trong trng hp to robot nng
bnh. Bn to lp mi CookieRobot, k tha t lp RobotTemplate. Bn c th vit lp
CookieRobot bng cch lm cho hm getParts thng bo Getting flour and sugar, hm
assemble thng bo Baking a cookie, v hm test thng bo Crunching a cookie



Ti gi, bn s dng hm go t b khun template to hai lp mi, AutomotiveRobot
v CookieRobot, v bn vit li mt s bc trong thut ton ty thuc vo hai loi robot
khc nhau. Bn khng phi vit li hai lp ny t u.

Kim tra vic to Robot

Bn hy to hai i tng ca hai lp AutomotiveRobot v CookieRobot, v gi hm go nh
sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 93



Khi bn chy th chng trnh, bn c th thy rng bn tht s c th ty chnh mt s
bc trong thut ton ca hai loi robot khc nhau.



Thm vo mt hook (ND: Hook mc cu mt k thut chn bt chng
trnh)

Bn cng c th thm vo mt hook trong thut ton. Mt hook l phng php kim sot
mt s kha cnh ca thut ton. V d, nu bn mun phn kim tra testing trong thut
ton Robot c th thc hin hay khng, bn c th thm vo mt iu kin, mt hm hook
c tn testOK nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 94



Mc nh, bn c th b qua hm hook testOK nu khng lm g khc, thut ton Robot
s gi y cc bc, bao gm c hm test. Tuy nhin bn c th cu mc vo thut
ton bng cch vit li hm testOK trong mt lp con, lp CookieHookRobot, ni m hm
testOK s tr v gi tr false, khng phi l true.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 95



Bi v hm hook testOK tr v gi tr false, thut ton Robot s khng gi hm test t hm
go, bn c th xem m sau:



Kim tra hm hook:

By gi to chng trnh, v gi hm cookieHookRobot.go:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 96



Bn s thy thut ton Robot thc hin, tr bc test:



Bn thy , bn khng phi lm bt c th g vi hm hook, tuy nhin nu bn mun,
bn c th tc ng ln vic thc hin ca thut ton. Nu bn xy dng mt thut ton s
dng nhiu hm tru tng, tng hm ny s c vit li lp con, mc khc, hm hook
s khng phi vit li, tr khi bn mun thay i vic thc thi mc nh ca thut ton.

Bn s dng mu thit k Template Method khi bn c mt thut ton vi nhiu bc v
bn mun cho php ty chnh chng trong lp con. Tht d dng. Bng cch vit li cc
hm c khai bo trong lp tru tng, bn s thay i c theo cch bn mun.

Mu thit k Template Method l mt tng tuyt vi khi bn c mt thut ton nhiu
bc m chnh bn c th ty chnh n. C mt mu thit k khc cng lm vic ging vy,
m ti s tho lun trong phn ti ca chng, n l mu Builder.

Xy dng Robots vi mu Builder

Tin tt! Gim c iu hnh ca GigundoCorp reo ln, trong khi phng nh bay vo phng
hp. Khch hng ca chng ta ni rng h mun kim sot nhiu hn tnh nng ca Robot,
v vy chng ta khng th s dng nhng b khun Template vit sn c na. By gi
h mun h c th chn hnh ng m robot s thc hin

ti lm r ch ny, bn ni u tin, chng ta thit lp mi th , robot khi ng,
nhn nguyn liu, lp rp, kim tra v dng. Nhng by gi khch hng li mun kim sot
trnh t ny v chn la nhng chc nng h mun? C th l robot khi ng, ri kim tra,
ri lp rp, ri dng?

ng vy, Gim c ni

y l thi im s dng mt mu thit k mi, bn ni

Ti e rng phi lm nh vy, Gim c ni.

Nhng quy nh ca khch hng

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 97

Trong mu thit k Template Method, vn chnh l nhng thut ton nhiu bc bn c
th ci t n theo cch bn mun, v nhng lp con s dng theo cch bn thit lp
(Mc d bn c th vit li mt s bc, nhng quy trnh vn khng thay i ). Nhng by
gi tnh hnh khc khch hng mun h thit lp trnh t hot ng v s lng cc
bc ca thut ton. V vy m ngun m bn pht trin khng cn l trung tm chnh
na, bn phi ng gi n trong mt lp mi, lp builder.

Mu Template Method m ta c lm quen trong phn trc cho php bn ty chnh cc
bc ca mt thut ton bng cch vit li cc bc trong thut ton nh hnh sau:



Mi chc nng u da trn khun mu Template trong mu thit k ny, v bn c th ty
chnh template theo cch bn mun. Nhng by gi bn khng cn iu khin thut ton
na, thay vo chnh khch hng thc hin. H to robot vi nhng chc nng v trnh t
h mun. V d thm hnh ng khi ng, khch hng c th gi hm addStart.
thm hnh ng kim tra, h gi hm addTest v vn vn. Hnh minh ha nh sau:



c th p ng yu cu kim sot hnh ng robot ca khch hng GigundoCorp, bn
phi chuyn m ngun c qua mt lp mi, lp CookieRobotBuilder, lp ny h tr cc hm
addStart, addTest, addAssemble v hm addStop, nh hnh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 98



Nh , khch hng c th s dng CookieRobotBuilder to robot nng bnh. Khi khch
hng to xong robot, m ngun s gi hm getRobot ca i tng CookieRobotBuilder
nhn v mt robot mi, nh hnh v sau:



V by gi khc hng nm quyn kim sot cc thut ton, bn khng phi k tha mt
template mu na.Thay v vy, to mt loi khc ca robot, bn cho php khch hng s
dng nhng i tng builder khc nhau.

tng chnh nh sau: by gi khch hng c th thit lp trnh t v s lng cc bc
trong thut ton, v chn la ng i tng builder to ra robot m h mun.
Sch ca GoF ni rng, mu thit k Builder Tch ri vic to dng mt i tng phc tp
ra khi bn thn i tng v vy cho php cng mt qu trnh to dng c th to ra nhiu
loi i tng khc nhau

Khc bit ln nht gia mu Template Method v mu Builder l ai s to ra trnh t cc
bc trong thut ton. Trong mu Template, bn l ngi to ra trnh t, v cc lp con s
hin thc chng. Trong mu Builder, khch hng s thit lp trnh t v s lng cc bc
trong thut ton, v hon i gia cc builder m phi cung cp to ra cc i tng
khc nhau th hin thut ton .

S dng mu thit k Builder khi bn mun khch hng kim sot c qu trnh to dng.
V d, y l mu thit k m bn mun khi bn xy dng robot s dng cng mt qu
trnh khi to nhng mun c th to ra nhng con robot khc nhau. Tt c nhng g khch
hng cn l gi nhng builder khc nhau qu trnh xy dng vn nh c. y l mt v d
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 99

khc, bn mun c mt on vn bn v xy dng mt ti liu, nhng bn li khng bit
nh dng chnh xc ca n l RTF, Microsoft Word, hay vn bn n gin Mc d qu
trnh to dng l ging nhau cho tng ti liu, bn c th s dng nhng builder khc nhau
to da vo kiu ca loi ti liu.

Ni cch khc, khi khch hng mun kim sot qu trnh to dng, nhng bn vn mun c
th to ra nhiu i tng khc nhau, mu Builder s gip bn thc hin iu .

Ghi nh: Mu thit k ny tng t vi mu Factory, nhng mu Factory l trung tm trong
qu trnh khi to mt bc, ch khng ci t nhiu bc nh y.

Cho php khch hng to Robot

Khi bn s dng mu Builder, khch hng s ph trch qu trnh to dng. Khch hng s
dng i tng xy dng builder ca bn lm nhng g h mun. cho php khch
hng to robot th hin mt lot cc hnh ng khi ng, lp rp, ngng - Ti to ra
mt giao din interface Robot Builder h tr cc hm nh sau: addStart, addGetParts,
addAssemble, addTest v addStop:

V d to mt robot vi cc hnh ng start, test, assemble v sau l stop, khch
hng ch cn gi hm addStart, addTest, addAssemble v addStop ca i tng xy dng
builder theo ng trnh t . Khi robot c to xong, khch hng ch cn gi hm
getRobot ca Builder nhn v mt robot mi. V i tng robot mi ny c h tr hm
go, hm ny s thc hin hng lot hnh ng m bn to dng trc .

Bi v bn c nhiu loi i tng builder to nhiu loi robot khc nhau v d nh
builder xy dng robot lm bnh, builder xy dng robot lp rp t Ti s to mt giao
din interface RobotBuilder m tt c cc builder s hin thc giao din ny. y l nhng
hm m cc robot builder phi hin thc, t hm addStart ti hm addStop, k c hm
getRobot. Xem m sau:



Ti bt u to builder cho robot lm bnh, CookieRobotBuilder, cng ging nh tt c cc
builder khc, builder ny cn phi hin thc giao din RobotBuilder



i tng robot trong m ngun trn, da trn lp CookieRobotBuildable, s c ni ti
trong phn To mt vi robot tng thch. i tng robot c to s l mt i tng
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 100

CookieRobotBuildalbe. V th chng cn cn mt bin lu tr i tng ny, m nh sau:



Khch hng c th ci t cc hnh ng cho robot nh start, stop, test, assemble, getParts
theo trnh t bt k. lu li trnh t ny, ti s dng kiu ArrayList, vi i tng
actions nh sau:



Cch d dng nht lu tr trnh t cc hnh ng ca robot trong mng danh sch
actions l gn tng gi tr s nguyn cho tng hnh ng, nh hnh sau:



Ti lu i tng s nguyn trong mt mng danh sch ArrayList. V d, khi khch hng
mun thm hnh ng start, chng trnh gi hm addStart, v robot builder s thm mt
i tng s nguyn c gi tr 1 vo mng danh sch actions, v c th tip tc y l tt
c cc hm thm chc nng cho robot trong builder:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 101



Khi khch hng mun to mt i tng robot, h s gi hm getRobot ca builder ny. Khi
hm ny c gi, bn bit rng qu trnh khi to hon tt, v vy bn c th ci t
robot bng cch chuyn giao cho n tham s mng danh sch actions m n s thc thi.
Trong v d ny, tng robot s c ci t bng cch chuyn tham s actions thng qua
hm loadActions. M nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 102



Vy l hon thnh phn i tng xy dng builder, n cho php khch hng t ci t
robot theo trnh t h mun. Vy lm sao to lp Robot m ta s dng trn?

To mt s robot thch hp:

Tng loi th xy builder s to ra mt loi robot khc nhau, tng robot li c to t lp
c s ca n, nh lp CookieRobotBuildable hay AutomotiveRobotBuildalble. Tt c cc
robot phi c cng mt hm go thc hin cc chc nng. V vy bn c to mt giao din
interface vi tn RobotBuildable chc chn rng mi robot u phi hin thc giao din
ny. M nh sau:



By gi tt c Robot u phi hin thc giao din ny. y l cch lp RobotBuildable hot
ng. Bn c th np robot vi mng danh sch actions, thng qua hm loadActions, vi
tham s actions c i tng builder to trc. Xem m sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 103



Khi khch hng mun robot thc hin cc hnh ng c ci t sn, h gi hm go.
Trong hm go, bn c th duyt qua mng actions v gi tng hm tng ng vi chc
nng . V d bn duyt qua i tng s nguyn 1 trong actions, bn s gi hm start,
duyt ti s 2 bn gi hm getParts v vn vn..Bn c th s dng mt i tng
Iterator v pht biu switch trong hm go nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 104



Ghi ch: Bn cng cn phi thm cc hm cho tng hnh ng nh : hm start ( hin th
ch Starting), hm getParts ( hin th ch Getting flour and sugar ) vn vn.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 105


Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 106


Vy l hon tt lp CookieRobotBuilable. Gi bn c i tng xy dng Builder v robot.
Gi l lc th nghim chng



Ty thuc vo loi robot m user chn la, i tng builder dnh cho robot lm bnh hay
builder dnh cho robot lp rp t s c to ra. Xem m sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 107



Sau khch hng to loi robot m h mun, v s dng cc hm addStart, addGetParts,
addAssemble, addTest v addStop theo trnh t h mun.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 108



Sau khi robot c to, khch hng gi hm getRobot, i tng robot tr v c lu
trong bin RobotBuildable. V bn c th gi hm go ca robot. M nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 109



Khch hng c th to robot lm bnh hay robot lp rp t mt cch n gin thng qua
vic chn ng builder. y l kt qu:



V y l kt qa vic to robot lp rp t, s dng cng mt quy trnh khi to:


Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 110


Tuyt vi. Bn c th a builder cho khch hng, gip khch hng c th kim sot qu
trnh to dng i tng.

Download source code C shapr ti y

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 111

CHNG VIII: X L TP HP VI MU
ITERATOR V MU COMPOSITE
Trch dn:
Trong chng ny:
- S dng mu Iterator (i tng lp li)
- To mt i tng Iterator
- Duyt qua danh sch cc ph gim c bng mt Iterator ni ti
- Hiu c mu Composite (tp hp)
- S dng mt Iterator bn trong mt Composite
Gim c iu hnh ca cng ty GianDataPool, mt cng ty m bn mi chuyn n vi v
tr t vn, va i kh vo phng lm vic ca bn v ni lm bm g .

G vy? bn hi.

V gim c nhn quanh vi v mt b mt, v ni Ti c mt d n tuyt mt dnh cho
bn

Tuyt mt? bn ni N ni v ci g?

ng to ting! v gim c ni kh. Chng ta cn mt ngi khch quan cho chuyn ny,
V vy ti mi gp anh. Chng ta dng nh ang gp phi mt s vn vi vic qun tr
v chng ta cn phi theo di cc ph gim c Khng ai c bit vic ny. By gi, c
th c hai hay vi v ph gim c lm vic nh mt lp trnh vin vy

Tha thy thiu th, bn th di Chuyn di tp ca cc cng ty

Chng ta bt u vi khu vc bn hng, v gim c ni kh Anh c th vit mt chng
trnh duyt qua ht h s v in chng ra ch?

Cn hn th na, bn ni. Ti s s dng mu Iterator

Chng ny ni v hai mu c quan h mt thit vi nhau: mu Iterator v mu Composite.
Mu Iterator cung cp cho bn cch thc truy cp mt b phn bn trong mt i tng m
khng cn phi hiu r cu trc ni ti ca i tng . V d, hng Sun gii thiu mt
kiu tp hp trong vic biu din cc mi quan h trong ngn ng Java, nhng tp hp ny
cho php bn to iterator mt i tng c bit c thit k cho php bn truy cp mt
phn t ca tp hp cung cp mt cch thc truy cp d dng.
Mu Composite cng ni v tp hp. Vi mu Composite, tng l bn c th mt cu trc
hnh cy ni m tng i tng s thuc v mt ci cy -l mt nt l khng c nt con,
hoc l mt nhnh cy vi nhiu nt l con c th x l trong cng mt cch. Mu
Composite c thit k cho php bn x l nhiu i tng khc chng loi trong cng mt
tp hp theo cng mt cch, v mt i tng lp iterator li v tnh ph hp ti y
dng x l tng phn t ca mt nhnh cy v d, bn c th duyt qua ht cy.
Chng ta s tho lun v hai mu trong chng ny.
Truy cp i tng vi mu Iterator

Khi bn lm vic vi mt tp hp nhiu i tng, mu Iterator l mt gii php tt. Hng
ngy, bn phi lm vic vi nhiu loi tp hp nh cu trc cy, cy nh phn, mng, vng
m, bng bm, danh sch mng v vn vn Cch thc m tp hp ny lu tr i tng
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 112

ca n rt khc nhau, v nu bn mun truy cp d liu ca nhng i tng ny, bn phi
hc nhng k thut khc nhau cho tng loi tp hp.
V l ni mu Iterator xut hin. Bn c th s dng mt giao din interface c xc
nh r rng truy cp ti tng phn t ca tp hp. Trong nhng nm qua, cc phng
php c bn dn tr nn thch hp hn, v chng cng xut hin xuyn sut chng ny.
S dng nhng phng php ny, bn c th truy xut ti cc phn t trong tp hp theo
cch c bn nht.
Ghi nh: Theo sch ca Gang of Four (Gof), bn c th s dng mu thit k Iterator
Cung cp mt cch thc truy cp tun t ti cc phn t ca mt i tng tng hp, m
khng cn phi to dng ring cc phng php truy cp cho i tng tng hp ny


Ni cch khc, mt Iterator c thit k cho php bn x l nhiu loi tp hp khc nhau
bng cch truy cp nhng phn t ca tp hp vi cng mt phng php, cng mt cch
thc nh sn, m khng cn phi hiu r v nhng chi tit bn trong ca nhng tp hp
ny.

Gi : Mu thit k Iterator c bit quan trng khi tp hp bn ang xy dng c to
thnh t nhng tp hp con ring r, v d khi bn chnh sa bng bm vi danh sch
mng, chng hn.

Thng tin: Iterator thng c vit trong Java nh l nhng lp c lp. Ti sao nhng
Iterator c th lm vic c trong cc tp hp khc nhau? Chng c th, nhng trong
Java, cn ngn ng khc, chng khng th. tng thit k ny l mt trong nhng k
thut c gi l n trch nhim mt lp ch c duy nht mt cng vic lm. Hy
suy ngh rng tp hp duy tr cc phn t, mt iterator cung cp cch thc lm vic vi cc
phn t . Tch bit trch nhim gia cc lp rt hu dng khi mt lp b thay i Nu
c qu nhiu th bn trong mt lp n l, s rt kh khn vit li m ngun. Khi din
ra s thay i, mt lp n trch nhim s ch c mt l do duy nht thay i.

Truy cp i tng ca bn vi mt Iterator

Bn bt u lm vic vi rc ri gim c, l phi theo di cc ph gim c. Trong
trng hp ny, bn quyt nh lu cc ph gim c vo trong mt tp hp, vi mt tp
hp cc chc nng cho php truy xut cc v ny. Trong phin bn u tin ny, cc chc
nng c bn m mt Iterator phi c nh sau:



Ngy ny Java h tr mt giao din iterator trong java.util.Iterator, c nh ngha vi
ba phng php sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 113



Hm next tr v phn t k tip trong tp hp, hm hasNext tr v gi tr True nu vn cn
phn t trong tp hp v tr v false trong trng hp ngc li, hm remove cho php bn
g b mt phn t trong tp hp.

l cch Iterator lm vic N cung cp mt giao din n gin, nht qun lm vic
vi cc tp hp khc nhau. Gi s rng khch hng phi lm vic vi mt tp hp phc tp
v rc ri ( nh hnh sau) v khng bit cch thc lm vic vi n nh th no.


Khch hng c th s dng iterator lm cu ni vi tp hp, v khch hng c th s
dng cc phng thc c bn ca Iterator giao tip vi tp hp. Nh hnh sau:



Cng vic u tin khi lu tr d liu cc ph gim c cng ging cch trn. Bn quyt
nh, u tin l to mt lp lu tr thng tin cho tng ph gim c, vi tn lp VP ( Vice
President ph gim c, ph ch tch.. )

Bn phi to bn thnh phn quan trng trong lp ny, bao gm:
Mt hm khi dng cho php truyn gi tr tn ca v ph ny
Tn khu vc lm vic ca v ph
Hm getName tr v tn ca ngi ny
Ham print cho php in ra thng tin ca v ph ny, bao gm tn v khu vc lm vic
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 114




Lp ny ng gi thng tin mt ph gim c. By gi ta phi lu tr tt c ph gim
c trong mt lp.

Thu thp cc ph gim c vo mt tp hp:

Trong v d ny, bn to tp hp cc ph gim c da trn mng cn bn ca Java. List do
dng kiu cn bn ny, thay v dng cc chc nng c sn trong Java nh vector, danh
sch mng, bn bm vi phn t Iterator c sn, l vic to Iterator t u lm
vic vi tp hp th hi ng ngn, nhng rt tt hiu v mu ny.
Bn quyt nh lu thng tin cc ph gim c trong tng khu vc, v d khu vc bn hng
Sales, trong lp tn l Division

Trch dn:
public class Division
{
...
...
...
}
Hm khi dng ca lp Division s lu tr tn ca khu vc ny, v d Sales, v hm
getNames s tr v tn

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 115



Cc ph gim c s c lu trong mt mng, tn l vPs, v bn c th thm mt ph
gim c bng hm add nh sau:



Ni cch khc, i tng Division l mt tp hp, v i tng ph gim c VP l mt phn
t ca tp hp ny. thm mt iterator, tp hp cn phi c mt hm tn bn c th
t ty v d nh iterator chng hn (c th tn bao gm vic to createIterator v vic
nhn getIterator). Hm ny s chuyn mng cc ph gim c vo hm khi dng ca lp
iterator, ta gi tn lp ny l lp DivisionIterator. M nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 116



Bc tip theo l to iterator, lp DivisionIterator, cho php bn lp xuyn qua tp hp cc
ph gim c trong tp hp.

To lp Iterator

Lp iterator, DivisionIterator, hin thc ba hm trong giao din java.util.Iterator : hm nex,
hm hasNext, v hm remove. M nh sau:



Hm khi dng chp nhn mt mng cc phn t VP v lu tr li nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 117



By gi bn phi hin thc cc giao din ca Iterator. Hm next tr v phn t k tip trong
mng. M nh sau:



Hm hasNext tr v true nu c phn t k tip trong tp hp, ngc li tr v false. Trong
trng hp ny, bn phi kim tr cui ca dy cha? Bi v bn ang lm vic vi mt
mng c nh, bn cng phi kim tra nu phn t k tip l phn t trng (null) v bn
cng phi kim tra xem mng c phi l rng hay khng. Hm hasNext nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 118



Hin ti bn mun mng ph gim c ny ch c, bn tip tc hin thc hm remove vi
ni dung rng nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 119



Tuyt vi. Bn c i tng ph gim c, mt khu vc th hin nh mt tp hp cc
ph gim c, v mt i tng lp Iterator. Vic cui cng l a tt c chng vo mt
chng trnh v bt u lp qua cc ph gim dc

Lp qua cc ph gim c

Xem m sau:



M ngun bt u t vic to khu vc bn hng Sales v thm vo mt vi v ph gim c:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 120



Sau ta to mt iterator bng cch gi hm iterator v s dng cc hm hasNext, next
duyt qua tng ph gim c trong tp hp v hin th thng tin tng ngi mt.



Kt qu l, chng trnh in ra ton b thng tin cc ph gim c:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 121



t mi th vo trong tp hp composites

Gim c ca GianDataPool Inc, chy o vo vn phng bn vi v c thng v ni ln:
Ti mun sa thi mt vi ph gim c!

Tt, bn ni.

Ti mun lm thm na. By gi ti cn in ra tt c thng tin ph gim c ca ton b
cng ty khng ch khu vc bn hng, m l ton b cc khu vc.

Tt c cc khu vc? bn hi.

Vng. V c cc ph gim c hot ng c lp, khng trc thuc vo mt khu vc no .

Hmm, bn ni , n lc s dng mt mu thit k mi.

i , gim c ni Nh k rng y l mt v ct gim chi ph

Ti s s dng mu tng hp composites, bn ni.

C tn nhiu chi ph khng?

Khng bn ni. nhng ti phi lm nhiu thi

Bn hiu r rc ri. by gi bn phi x l ton b cng ty, khng ch l mt phn khu.
Ton b cng ty c nhiu khu vc vi cc ph gim c, v khu vc ny c th bao gm c
khu vc khc v bao gm c cc ph gim c t do na. Hnh sau ch ra m hnh cng
ty:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 122



V vy, gi y bn ang lm vic vi mt t chc phc tp, khng ch l mt khu vc bn
hng Sales na. V gim c iu hnh mun bn in ra ton b cng ty, v vy bn khng
ch cn hm print ca i tng VP, m tng khu vc phi c mt hm print ring. OK,
n lc s dng mu tng hp Composite.

Bn mun c mt hm print, m khi c gi, n s in ra thng tin ca mt ph gim c,
mt phng ban, hoc c t chc. Mu Composites l mu ni v vic to ra mt cu trc
hnh cy ni m tng l trong cy, c th c s dng trong cng mt cch vi nhnh ca
n ( nhnh l cu trc cha nhiu l, v ging cc nhnh khc ). tng chnh y l,
lm mi chuyn d dng, bn c th x l cc nt l v tp hp cc nt l trong mt ci cy
theo cng mt cch.

Ghi nh: Sch ca GoF ni rng, bn s dng mu Composites To ra cc i tng
trong mt cu trc hnh cy biu din cho mt cu trc phn cp. Mu Composites cho
php khch hng x l mt i tng ring hoc ton b i tng theo cng mt cch

l nhng g bn cn mt mu thit k cho php bn x l cc nt l hoc cc nhnh
ca cu trc cy theo cch ging nhau bi v bn mun c th in ra thng tt c cc ph
gim c ring l, trong mt khu vc, hoc c cng ty, ch bng cch gi hm print.

Mu thit k Composites rt ph hp vi mu Iterator bi v khi bn gi tng khu vc in
chnh n, n c th d dng duyt qua tng ph gim c mt. l c im in hnh
ca mu Composite khi bn yu cu mt nhnh thc hin mt hnh ng g , n s lp
qua tt c cc l con v nhnh con ca n.
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 123

tng ng sau ca mu Composite l vic x l cc nt l v nhnh trong mt cu trc
hnh cy s ging nhau. iu ny gip cho vic x l cc cu trc phc tp theo dng hnh
cy s d dng hn bi v bn khng cn phi thit lp cc hm khc nhau cho tng phn
ca cu trc.
thc hin mu Composite, sch ca GoF khuyn rng bn nn s mt lp tru tng
nh l mt lp c s cho c nt l v cc nhnh trong cu trc cy. Vic lm ny gip cho
cc nt l v cc nhnh s c chung mt tp hp cc hm, l tt c nhng g mu
Composite mun ni ti. Sch ca GoF ngh bn s dng mt lp tru tng, tuy nhin
bn cng c th s dng mt giao din interface lm vic ny trong Java.
Tt c bt u vi mt lp tru tng

Ti s theo ch dn ca sch GoF v to mt lp tru tng cho c ph gim c cng nh
khu vc, lp ny tn Corporate. Bn di l m ngun ca lp ny. Ch n cng c hm
add, v hm iterator tr v mt iterator, v mt hm print:



y l lp dng k tha cho c cc nt l ph gim c v cc nhnh cy khu vc.

To nt l ph gim c

Lp VP bn to trc y phi chnh sa mt cht, bn c th thng nht cch lm vic
vi c ph gim c v khu vc trong cng mt cy t chc, theo cch mu Composite
ni. c bit, bn phi k tha lp VP t lp tru tng Corporate m bn to trong
phn trn

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 124



Lp VP trc y ch cha tn v khu vc lm vic ca ph gim c v hm print in ra
thng tin ny. Nhng khch hng c th x l lp VP cng cch vi cc khu vc division,
bn cn thm mt hm to iterator cho n. Bi v mt ph gim c khng cha bt c ph
gim c no, nn iterator c to ra ch to tr v mt i tng ph gim c duy nht
khi bn gi hm next v hm hasNext lun tr v gi tr sai false. M nh sau:



Lp VPIterator s nh th no? Rt d dng, bn ch cn hin thc giao din Iterator ca
Java, a vo i tng VP thng qua hm khi dng, to hm next tr v i tng v
hm hasNext tr v gi tr false, nh m sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 125



By gi khch hng c th x l nt l ph gim c ging nh mt nhnh cy khu vc.
Thc t l iterator nt l ph gim c ch tr v duy nht mt ph gim c, nhng by gi
bn c mt iterator cho tng nt l, bn khng phi chnh sa m ngun c th va
lm vic vi nt l va lm vic vi cc phn khu.

To mt nhnh cy cc khu vc

Tng nhnh cy trong cu trc cy cng ty l mt khu vc trong cng ty, m c th bao
gm nhiu ph gim c hoc khu vc con. x l khu vc, bn quyt nh chnh sa lp
Division ( to trc y ) theo cch m rng t lp Corporate, nh cch lm vi lp
VP, m ngun nh sau:



Phn cn li ca lp Division s ging nh trc, ngoi tr bn phi chuyn i mt cht
ph vi i tng Corporate. Trc y, lp Division lu tr mt mng VPs cc ph gim
c bi v bn ch lm vic vi mt khu vc ca cng ty. By gi bn phi lm vic vi c
cng ty, mt khu vc c th cha mt khu vc con nh l nhng mng cc ph gim c
VPs. T khi c hai lp divison v mng VPs k tha t lp Corparate, bn c th d dng
han chuyn lu tr v lm vic vi i tng Corparate trong lp Division ch rng
hm print s duyt qua tt c cc i tng trong mt khu vc, cho d chng l mng VPs
Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 126

hay khu vc.



Bng cch chuyn i t vic x l lp VP bn trong mt khu vc division sang vic x l
mt lp Corporate, gi y bn c th lu tr mng VPs v cc khu vc khc v v vy
bn hin thc c mu Composite, cho php bn c th x l cc nt l hay nhnh cy
theo cng mt cch.

Iterator ca lp division, c hin thc t lp DivisionIterator, m nh sau:

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 127



Bn ng ngi ra trong gh vi n ci hi lng trn mi, thm cm n mu thit k
Composite. lm mt s chuyn i t v d mt khu vc trong phn u ca chng
ny, sang mt mt cu trc hnh cy cho ton b cng ty, tt c nhng g bn phi lm l
bo m rng tt c cc i tng trong cng mt cy phi da trn cng mt lp, v hin
thc cng mt tp hp cc hm, cho php chng c s dng theo cng mt cch.

Xy dng cng ty ca bn

Bn c ph gim c; bn c cc khu vc. By gi l lc bn xy dng mt cng ty
cha chng. gi cho mi vic n gin, bn c th s dng mt ArrayList lu tr
cc khu vc divisions v cc ph gim c trong cng ty. Tt c cc i tng trong cng ty
u l i tng Corporate, v vy ArrayList s lu tr cc i tng Corporate.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 128



Khi bn mun thm mt i tng Corporate vo cy, ch cn s dng hm add ca
corporate, hm s thm mt i tng mi vo ArrayList.



Mun in ra thng tin tt c cc i tng trong cng ty? Ch cn gi hm print ca i tng
Corporate, khi cc iterator trong ArrayList s in ra thng tin trong cc khu vc v cc
ph gim c ca ton cng ty ch rng khi bn gi hm print ca khu vc division, n
s duyt qua ton b cc i tng bn trong, v gi tng hm print ca chng. V vy khi
gi hm print t cp cao nht ca Corporate, n s in ra ton b thng tin ca cng ty.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 129



OK. n lc cho chng trnh chy th. u tin bn to mt i tng
Corporation



Sau bn to khu vc R&D v to ra mt vi ph gim c

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 130



Tip theo, bn to khu vc Sales. Bn s dng hm add thm khng ch cc ph gim
c m cn c th thm c cc khu vc con, v d khu vc Western Sales, vi mt s ph
gim c

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 131



V bn c th thm cc ph gim c vo cng ty mt cch trc tip, cng ging nh cch
thm vo mt khu vc, bi v bn c th x l cc nt l v cc nhnh con theo cng mt
cch. Sau khi to mt ph gim c, bn c thm ph gim c v khu vc bn to
trc vo cng ty v in tt c thng tin chng ra vi mt hm duy nht l hm print ca
i tng corporation, hm ny s gi hm print ca tng phn t bn trong n.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 132



Chy chng trnh, v bn nhn c kt qu.



Bn a danh sch thng li ny ti cho v Gim c iu hnh. ti lc ct ta bt ci
cy ny, bn ni.

Series bi dch Design Patern for Dummies Tc gi: haihth (htp://congdongcviet.com/)
Page 133

H? Gim c hi

Loi b nhng cnh cy cht, bn ni. Gim c ci hnh phc.

End chapter 8: MU ITERATOR V MU COMPOSITE

Seri dch ny ca bn haihth, mnh ch post gim
Cm n haihth nhiu, mong nhn c cc chap tip theo, nhng sao chap 6 li khng c
nh ^^














-- THE END --

You might also like