Professional Documents
Culture Documents
Bao Cao Design Patterns
Bao Cao Design Patterns
Mc lc
Li ni u .......................................................................................................... 3
Li ni u
Design pattern l mt k thut dnh cho lp trnh hng i tng. N cung cp
cho ta cch t duy trong tng tnh hung ca vic lp trnh hng i tng, v phn
tch thit k h thng phn mm.N cn thit cho c cc nh lp trnh v nh phn tch
thit k. i vi nhng ngi chuyn v lp trnh th vic nm vng cng c lp trnh
thi cha ,h cn phi c mt t duy, mt k nng gii quyt cc tnh hung nh ca
cng vic xy dng phn mm m h l ngi thi hnh.Vic gii quyt ny phi m
bo tnh n nh l h c th gii quyt c trong mi tnh hung, vi thi gian ng
tin , phng php gii quyt hp l v c bit l phi theo mt chun nht
nh.Nhng nh phn tch thit k mc cao, vic nm vng cng c lp trnh c th l
khng cn thit, nhng h cng cn phi bit c nhng khu nh nht chi tit nht
ca thit k ca h a ra c th thc hin c hay khng v nu thc hin c th c
th thc hin nh th no, v s theo mt chun ra sao.
Design pattern c dng khp mi ni, trong cc phn mm hng i tng
cc h thng ln. Trong cc chng trnh tr chi, ... V c trong cc h thng tnh ton
song song,..
Design pattern th hin tnh kinh nghim ca cng vic lp trnh, xy dng v
thit k phn mm.C th chng ta gp design pattern u , trong cc ng dng,
cng c th chng ta tng s dng nhng mu tng t nh design pattern gii
quyt nhng tnh hung ca mnh, nhng chng ta khng c mt khi nim g v n
c.Trong ni dung n mn hc ny chng ti xin trnh by nhng hiu bit ca mnh
v design pattern theo hng tip cn mang tnh kinh nghim. Vic ci dt cc mu
c trnh by trn mt ti liu i km.
Chng em xin cm n s hng dn ca thy Nguyn Ngc Bnh, gip
chng em hon thnh n mn hc ny.
III.Design pattern l g ?
Design patterns l tp cc gii php cho cho vn ph bin trong thit k cc
h thng my tnh. y l tp cc gii php c cng nhn l ti liu c gi tr,
nhng ngi pht trin c th p dng gii php ny gii quyt cc vn tng t.
Ging nh vi cc yu cu ca thit k v phn tch hng i tng (nhm t c
kh nng s dng cc thnh phn v th vin lp), vic s dng cc mu cng cn phi
t c kh nng ti s dng cc gii php chun i vi vn thng xuyn xy ra.
Christopher Alexander ni rng : Mi mt mu m t mt vn xy ra lp i
lp li trong mi trng v m t ci ct li ca gii php cho vn .Bng cch
no bn dng n c triu ln m khng lm ging nhau 2 ln.
- Rationale L do v ng c cho mu
Su liu c th gm m v cc biu tiu biu.Cc biu UML c th c
dng minh ho cho cch lm vic ca tng mu.Vic la chn kiu biu ph
thuc vo bn cht ca mu.
5.Quy tc biu din mu trong UML
Mt trong nhng mc tiu ca UML l h tr cc khi nim cp cao, nh
thnh phn,cng tc,framework v mu.Vic h tr ny c thc hin bng cch cung
cp mt c ch nhm nh ngha r rng ng ngha ca chng,t vic s dng cc
khi nim c d dng hn nhm t c kh nng ti s dng m cc phng php
hng i tng yu cu. Kha cnh thuc cu trc ca mu c biu din trong UML
bng cch dng cc cng tc mu
Cng tc mu c biu din bng mt hnh Ellipse nt t v mt hnh ch
nht nt t nm chng ln phn cung pha trn bn phi ca n nh sau
Role name 1
Role name 2
..vv..
Facade
Subsystem class
Facade
Collaboration name
AbstractFactory (ContinentFactory)
Khai bo mt giao din cho cc thao tc to ra cc dn xut tru tng
ConcreteFactory (AfricaFactory, AmericaFactory)
Ci t cc thao tc to ra cc i tng dn xut chi tit
AbstractProduct (Herbivore, Carnivore)
Khai bo mt giao din cho mt kiu i tng dn xut
Product (Wildebeest, Lion, Bison, Wolf)
nh ngha mt i tng dn xut c to ra bi mt factory c th tng
ng.
Ci t giao din AbstractProduct
Client (AnimalWorld)
S dng giao din c khai bo bi cc lp AbstractFactory v
AbstractProduct
Ci t cho lp WidgetFactory:
class WidgetFactory
{
public:
virtual Window* CreateWindow();
virtual ScrollBar* CreateScrollBar();
};
10
11
{
//Cc thuc tnh v cc phng thc nh ngha ti y
};
class PMScrollBar:public ScrollBar
{
//Cc thuc tnh v cc phng thc nh ngha ti y
};
truy cp n cc i tng ny ti chng trnh ng dng ta c th thc hin
nh sau:
class Client
{
private:
WidgetFactory* wf;
};
d. Mu lin quan:
AbstractFactory thng c ci t cng vi singleton, FactoryMethod i khi
cn dng c Prototype. Cc lp con c th (concrete class) thng c ci t bng
singleton.Bi singleton c th to ra nhng i tng ng nht cho d chng ta gi n
u trong chng trnh.Cc mu ny s c ni k hn cc phn sau.
2. Builder
(tn sut s dng : trung bnh)
a. Vn t ra
Trong nhng ng dng ln, vi nhiu cc chc nng phc tp v m hnh giao
din s.Vic khi to ng dng thng gp nhiu kh khn. Chng ta khng th dn
tt c cng vic khi to ny cho mt hm khi to .V nh th s rt kh kim sot ht,
v hn na khng phi lc no cc thnh phn ca ng dng cng c khi to mt
cch ng b. C thnh phn c to ra vo lc dch chng trnh nhng cng c
thnh phn tu theo tng yu cu ca ngi dng, tu vo hon cnh ca ng dng, m
n s c to ra. Do vy ngi ta giao cng vic ny cho mt i tng chu trch
nhim khi to, v chia vic khi to ng dng ring r, c th tin hnh khi to
ring bit cc hon cnh khc nhau. Hy tng tng vic to ra i tng ca ta
ging nh nh vic chng ta to ra chic xe p. u tin ta to ra khung xe, sau to
ra bnh xe, chng ta to ra bung xe, xch, lp,.. Vic to ra cc b phn ny khng
nht thit phi c thc hin mt cch ng thi hay theo mt trt t no c, v n c
th c to ra mt cch c lp bi nhiu ngi. Nhng trong mt m hnh sn xut
nh vy, bao gi vic to ra chic xe cng c khp kn to ra chic xe hon chnh,
l nh my sn xut xe p.Ta gi i tng nh my sn xut xe p ny l builder
( ngi xy dng).
b. nh ngha
Builder l mu thit k hng i tng c to ra chia mt cng vic khi
to phc tp ca mt i tng ra ring r t c th tin hnh khi to i tng
cc hon cnh khc nhau.
c. S UML:
12
Builder (VehicleBuilder)
- Ch ra mt giao din tru tng cho vic to ra cc phn ca mt i tng
Product.
ConcreteBuilder (MotorCycleBuilder, CarBuilder, ScooterBuilder)
- Xy dng v lp rp cc phn ca dn xut bng vic ci t b sung giao
din Builder.
- nh ngha v gi lin kt n i din m n to ra.
- Cung cp mt giao din cho vic gi dn xut ra.
Director (Shop)
- Xy dng mt i tng s dng giao din Builder.
Product (Vehicle)
- Biu din cc i tng phc tp.ConcreteBuilder dng nn cc i din
bn trong ca dn xut v nh ngha qu trnh x l bng cc thnh phn lp
rp ca n.
- Gp cc lp m nh ngha cc b phn cu thnh, bao gm cc giao din
cho vic lp rp cc b phn trong kt qu cui cng.
d.Cc mu lin quan
Builder thng c ci t cng vi cc mu nh Abstract Factory .Tm quan
trng ca Abstract Factory l to ra mt dng cc i tng dn xut (c n gin v
phc tp).Ngoi ra Builder cn thng c ci t km vi Composite pattern.
Composite pattern thng l nhng g m Builder to ra.
3.Factory Method
(tn sut s dng :cao trung bnh)
a. Vn t ra
Cc Framework thng s dng cc lp tru tng nh ngha v duy tr mi
quan h gia cc i tng.Mt framework thng m nhim vic to ra cc i
tng hon chnh. Vic xy dng mt framework cho ng dng m c th i din cho
nhiu i tng ti liu cho ngi dng. C 2 loi lp tru tng ch cht trong
framework ny l lp ng dng v ti liu.C 2 lp u l lp tru tng, v trnh
khch phi xy dng cc dn xut, cc lp con hin thc ho, to ra i tng ph
hp vi yu cu ca ng dng. Chng hn to ra mt ng dng drawing, chng ta
nh ngha mt lp DrawingApplication v mt lp DrawingDocument. Lp ng dng
13
chu trch nhim qun l ti liu v chng ta s to ra chng khi c nhu cu ( chng hn
khi ngi dng chn Open hoc New t menu).
Bi v mt lp Document c bit nh th ny c to ra t cc dn xut ca
lp Abstract Document (trong framework) a ra cc th nghim cho mt ng dng
Drawing, lp ng dng khng th bit trc c lp dn xut ca Abstract Document
no s c to ra trnh by, m n ch bit khi no mt i tng ti liu no nn
c to ch khng bit loi i tng ti liu no to. iu ny to ra mt s tin
thoi lng nan: framework phi th nghim mt lp, nhng n ch bit v lp tru
tng ca n, m lp tru tng ny li khng th th nghim trc tip c.Nu ai
tng lm vic vi giao din ng dng n ti liu v a ti liu trong ngn ng Visual
C++, chng ta cng s bt gp mt vn tng t. i tng MainFrame c th to ra
mt di tng view mi khi ngi dng nhn chut vo menu View hay Open, nhng
MainFrame hon ton khng h bit mt cht thng tin no trc v View v n
khng cha bt c mt th nghim no ca View.
Mu Abstract Method a ra mt gii php cho vn ny.N ng gi thng
tin v lp dn xut Document no c to v a ra ngoi framework.
Lp dn xut ng dng nh ngha li mt phng thc tru tng
CreateDocument() trn lp Application tr v mt i tng thuc lp dn xut ca
lp document.
Class Application
{
//Cc khai bo khc
Public:
Document* CreateDocument();
//Cc khai bo khc
};
Document* Application::CreateDocument()
{
Document* newDocument = new MyDocument();
Return newDocument;
}
Khi mt i tng thuc lp dn xut ca Application c to ra, n c th to
ra lun cc i tng ti liu c bit cho ng dng m khng cn bit v cc lp
.Chng ta gi CreateDocument l mt factory method bi v nhim v ca n l sn
xut ra cc i tng.
b. nh ngha Factory Method
Factory Method l mt giao din cho vic to ra mt i tng, nhng cho
lp dn xut quyt nh lp no s c to.Factory method cho mt lp tr hon s
th nghim mt lp con.
c. S UML
14
Product (Page)
- nh ngha giao din ca cc i tng m Factory Method to ra.
ConcreteProduct (SkillsPage, EducationPage, ExperiencePage)
- Ci t giao din Product.
Creator (Document)
- Khai bo Factory Method m tr v mt i tng ca kiu Product. S
kin to ny cng c th nh ngha mt ci t mc nh ca Factory
Method tr v mt i tng ConcreteProduct mc nh.
- C th gi Factory Method to ra mt i tng Product.
ConcreteCreator (Report, Resume)
- Chng ln Factory Method tr v mt th nghim ca mt
ConcreteProduct.
d. Mu lin quan
Abstract Factory thng c ci t cng vi Factory Method. Lp Factory
Method thng c gi l Template Method. Trong v d v ng dng Drawing
trn,NewDocument l mt template method.
Prototype khng cn n mt lp con Creator, tuy nhin thng i hi mt
phng thc to th nghim trn lp dn xut.
4. Prototype
(tn sut s dng : thp trung bnh)
a. nh ngha
Prototype l mu thit k ch nh ra mt i tng c bit khi to, n s
dng mt th nghim s khai ri sau sao chp ra cc i tng khc t mu i
tng ny.
b.S UML
15
Prototype (ColorPrototype)
- Khai bo mt giao din cho dng v tnh ca chnh n.
ConcretePrototype (Color)
- Ci t mt thao tc cho dng v tnh ca chnh n.
Client (ColorManager)
- To ra mt i tng mi bng vic yu cu mt nguyn mu t dng v
tnh ca n
c. Mu lin quan
Prototype v Abstract Factory lin quan n nhau cht ch, c th i chi nhau
theo nhiu kiu.Tuy nhin chng cng c th kt hp cng nhau.Mt Abstract Factory
c th cha mt tp cc Prototype v tnh v tr v cc i tng sn xut.
5. Singleton
(tn sut s dng :Cao)
a. Vn t ra
Ta hy xem xt v mt i tng qun l ti nguyn trong cc ng dng. Mi
ng dng c mt b qun l ti nguyn, n cung cp cc im truy cp cho cc i
tng khc trong ng dng. Cc i tng (ta gi l i tng khch) c th thc hin
ly ra t b qun l ti nguyn nhng g chng cn v thay i gi tr nm bn trong b
qun l ti nguyn . truy cp vo b qun l ti nguyn i tng khch cn phi
c mt th nghim ca b qun l ti nguyn, nh vy trong mt ng dng s c rt
nhiu th nghim ca b qun l ti nguyn c to ra.
class ResourceManager
{
private:
int x;
public:
ResourceManager(){x =0;....}
void SetX(int _x){ x = _x;}
void GetX(){ return x;}
}
class ClientObject1
16
{
public:
void DoSomething()
{
ResourceManager rm;
printf(x = %d,rm.GetX());
x = 100;
}
}
class ClientObject2
{
public:
void DoSomething()
{
ResourceManager rm;
printf(x = %d,rm.GetX());
x = 500;
}
}
Trong v d trn hm DoSomething() ca ClientObject1 khi truy cp vo i
tng thuc lp ResourceManager s in ra mn hnh X = 0; v t vo x = 100;
Sau hm Dosomething() ca ClientObject2 khi truy cp vo i tng thuc
lp ResourceManager s in ra mn hnh X = 0 v t vo x = 500; R rng l ti
nguyn m cc i tng khch truy cp vo khng th hin s thng nht ln nhau.
iu m l ra khi gi tr x trong ResourceManager b ClientObject1 thay i th
ClientObject2 phi nhn bit c iu v in ra mn hnh X=100 . Nhng theo logic
ci t trn th khi i tng thuc lp ClientObject1 truy cp n ResourceManager
n to ra mt Instance v t thuc tnh x = 100; i tng ClientObject2 truy cp n
ResourceManager n to ra mt Instance v t thuc tnh x = 500. Hai Instance ny
hon ton c lp nhau v vng nh do m ti nguyn x m n qun l cng l 2 ti
nguyn c lp vi nhau.Vn t ra l phi to ra mt b qun l ti nguyn hon
ho to ra mi th nghim ging nhau ti nhiu ni nhiu thi im khc nhau trong
ng dng.Singleton cung cp cho ta mt cch gii quyt vn ny.
b.nh ngha
Singleton l mu thit k nhm m bo ch c duy nht mt th nghim v cung
cp im truy cp ca n mt cch thng nht ton cc.
c.S UML
Singleton (LoadBalancer)
- nh ngha mt thao tc to th nghim cho php i tng khch truy
nhp n th nghim ng nht ca n nh mt thao tc ca lp.
17
Nhm Structural
6. Adapter.
(tn sut s dng :cao trung bnh)
a. Vn t ra
i khi mt lp cng c c thit k cho vic s dng li, li khng th s
dng li ch bi giao din khng thch hp vi min giao din c bit m mt ng
dng yu cu.Adapter a ra mt gii php cho vn ny.
Trong mt trng hp khc ta mun s dng mt lp tn ti v giao din ca n
khng ph hp vi giao din ca mt lp m ta yu cu.Ta mun to ra mt lp c kh
nng c dng li, lp cho php kt hp vi cc lp khng lin quan hoc khng
c d on trc, cc lp khng nht thit phi c giao din tng thch vi
nhau.(Ch vi i tng adapter) ta cn s dng mt vi lp con tn ti, nhng
lm cho cc giao din ca chng tng thch vi nhau bng vic phn lp cc giao din
l vic lm khng thc t, lm c iu ny ta dng mt i tng adapter
bin i giao din lp cha ca n.
b. nh ngha
Adapter l mu thit k dng bin i giao din ca mt lp thnh mt giao
din khc m clients yu cu. Adapter ngn cn cc lp lm vic cng nhau khng
th lm bng cch no khc bi giao din khng tng thch.
c. S UML
18
d. Mu lin quan
Bridge c mt cu trc tng t nh mt i tng ca Adapter, nhng Bridge
c mt mc ch khc.N chia giao din t cc phn ci t ca n ra ring r t
c th linh hot hn v c lp nhau. S dng mt Adapter ng ngha vi vic thay
i giao din ca mt i tng tn ti.
Decorator nng cp mt i tng khc m khng lm thay i giao din ca n.
Mt Decorator do m trong sut vi ng dng hn l mt Adapter. Nh mt h qu
Decorator h tr c ch kt tp quy m iu ny khng th thc hin c i vi
cc Adapter thun tu.
Proxy nh ngha mt i din cho mt i tng khc v khng lm thay i
giao din ca n.
7. Bridge
(Tn sut s dng :trung bnh)
a. Vn t ra
Khi mt lp tru tng (abstraction) c th c mt vi thnh phn b sung thm
th cch thng thng ph hp vi chng l s dng k tha. Mt lp tru tng nh
ngha mt giao din cho tru tng , v cc lp con c th thc hin n theo cc cch
khc nhau. Nhng cch tip cn ny khng mm do. S k tha rng buc mt
thnh phn b sung thm l c nh cho abstraction, iu ny lm n kh thay i, m
rng, v s dng li cc abstraction, cc thnh phn b sung mt cch c lp.Trong
trng hp ny dng mt mu Bridge l thch hp nht.Mu Bridge thng c ng
dng khi :
- Ta mun trnh mt rng buc c nh gia mt abstraction v mt thnh phn b
sung thm ca n.
19
Abstraction (BusinessObject)
-nh ngha mt giao din tru tng
- Duy tr mt tham chiu ti i tng ca cc lp k tha t n
RefinedAbstraction (CustomersBusinessObject)
- M rng giao din bng cch nh ngha mt i tng tru tng
Implementor (DataObject)
- nh ngha giao din cho lp k tha.Giao din ny khng phi tng ng
chnh xc vi giao din tru tng. Trong thc t 2 giao din ny c th kh
l c lp. Vic k tha mt cch tu cc giao din cng ch cung cp duy
nht cc thao tc nguyn thu v lp tru tng nh ngha mt thao tc mc
trn da nhng thao tc nguyn thu ny.
ConcreteImplementor (CustomersDataObject)
- Ci t giao din c ci t v nh ngha mt ci t c th.
20
d. Cc mu lin quan
Abstract Factory cng c th to ra v cu hnh mt Bridge. Adapter c th c
c cu theo hng 2 lp khng c quan h g vi nhau c th lm vic vi nhau
c. N thng ng dng cho cc h thng sau khi c thit k. Bridge xt mt
kha cnh khc n kt thc mt thit k lp tru tng v lp ci t c th tu bin
mt cch c lp.
8. Composite
(tn sut s dng :Cao)
a. Vn t ra
Cc ng dng ha nh b son tho hnh v v cc h thng lu gi biu
cho php ngi s dng xy dng ln cc lc phc tp khc xa vi cc thnh phn
c bn, n gin. Ngi s dng c th nhm mt s cc thnh phn to thnh cc
thnh phn khc ln hn, v cc thnh phn ln hn ny li c th c nhm li to
thnh cc thnh phn ln hn na. Mt ci t n gin c th xc nh cc lp cho cc
thnh phn ha c bn nh Text v Line, cng vi cc lp khc cho php hot ng
nh cc khun cha cc thnh phn c bn .
Nhng c mt vn vi cch tip cn ny, l, m s dng cc lp phi tc
ng ln cc i tng nguyn thy (c bn) v cc i tng bao hm cc thnh phn
nguyn thy y l khc nhau ngay c khi hu ht thi gian ngi s dng tc ng ln
chng l nh nhau. C s phn bit cc i tng ny lm cho ng dng tr nn phc
tp hn. Composite pattern cp n vic s dng cc thnh phn quy lm cho
cc client khng to ra s phn bit trn.
Gii php ca Composite pattern l mt lp tru tng biu din c cc thnh phn
c bn v cc lp cha chng. Lp ny cng xc nh cc thao tc truy nhp v qun l
cc con ca n.
V d:
21
Component (DrawingElement)
- Khai bo giao din cho cc i tng trong mt khi kt tp.
- Ci t cc phng thc mc nh cho giao din chung ca cc lp mt
cch ph hp.
- Khai bo mt giao din cho vic truy cp v qun l cc thnh phn con ca
n
- nh ngha mt giao din cho vic truy cp cc i tng cha ca cc thnh
phn theo mt cu trc quy v ci t n mt cch ph hp nht.
22
Leaf (PrimitiveElement)
- i din cho mt i tng nt l trong khi kt tp. Mt l l mt nt
khng c con.
- nh ngha hnh vi cho cc i tng nguyn thu trong khi kt tp
Composite (CompositeElement)
- nh ngha hnh vi cho cc thnh phn m c con.
- Lu tr cc thnh phn con
- Ci t ton t quan h gia cc con trong giao din ca thnh phn
Client (CompositeApp)
- Vn dng cc i tng trong khi kt tp thng qua giao din ca thnh
phn
d. Cc mu lin quan
Mt mu m thng dng lm thnh phn lin kt n i tng cha l Chain of
Responsibility
Mu Decorator cng thng c s dng vi Composite.Khi Decorator v
Composite cng c s dng cng nhau, chng thng s c mt lp cha chung. V
vy Decorator s h tr thnh phn giao din vi cc phng thc nh Add, Remove
v GetChild.
Mu Flyweight cho chng ta chia s thnh phn, nhng chng s khng tham
chiu n cha ca chng.
Mu Iterator c th dng duyt mu Composite.
Mu Visitor nh v thao tc v hnh vi no s c phn phi qua cc lp l v
Composite.
9. Decorator
(tn sut s dng :Cao trung bnh )
a. nh ngha
Gn mt vi chc nng b sung cho cc i tng (gn ng). Decorator cung
cp mt s thay i mm do cho cc phn lp m rng thm cc chc nng.
b. ng dng
S dng Decorator khi:
- Thm cc chc nng b sung cho cc i tng ring bit mt cch ng v trong
sut, ngha l khng chu nh hng (tc ng ) ca cc i tng khc.
- Cho cc chc nng m cc chc nng ny c th c rt li (hy b) (nu khng
cn na).
- Khi s m rng c thc hin bi cc phn lp l khng th thc hin c. i
khi mt lng ln cc m rng c lp c th thc hin c nhng li to ra mt s
bng n cc phn lp tr gip cho cc kt hp. Hoc mt nh ngha lp c th b
che i hay ni cch khc n khng c gi tr cho vic phn lp.
23
c. S UML
Component (LibraryItem)
- nh ngha giao din cho i tng m c th c nhim v thm n vo
mt cch ng
ConcreteComponent (Book, Video)
- nh ngha mt i tng c th gn nhim v thm thnh phn cho n
Decorator (Decorator)
- Duy tr mt tham chiu ti mt i tng thnh phn v nh ngha mt
giao din m ph hp vi giao din ca thnh phn.
ConcreteDecorator (Borrowable)
- Thm nhim v cho thnh phn
d. Cc mu lin quan
Mu Decorator khc vi Adapter, Decorator ch thay i nhim v ca i
tng, khng phi l thay i giao din ca n nh Adapter.Adapter s mang n cho
i tng mt giao din mi hon ton.Decorator cng c th coi nh mt Composite
b thoi ho vi duy nht mt thnh phn. Tuy nhin, mt Decorator thm phn nhim
ph, n l phn i tng c kt tp vo.Mt Decorator cho php chng ta thay i
b ngoi ca mt i tng, mt strategy cho php chng ta thay i rut ca i
tng. Chng l 2 cch lun phin nhau ta thay i mt i tng.
10. Facade
(Tn sut s dng :Cao)
a. Vn t ra
Khi cu trc ha mt h thng thnh cc h thng con s gip lm gim phc
tp ca h thng. Mt mc tiu thit k thng thng l ti thiu ha s giao tip v
ph thuc gia cc h thng con. Mt cch t c mc tiu ny l a ra i
24
tng facade, i tng ny cung cp mt giao din n gin d dng tng qut ha
cho mt h thng con hn.
Facade (MortgageApplication)
- C th xem nh cc lp h thng con m chu trch nhim i vi cc yu cu
n n.
- Trnh khc u nhim yu cu ti mt i tng ca h thng con
Subsystem classes (Bank, Credit, Loan)
- Ci t chc nng ca h thng con
- Gi handle lm vic bng i tng Facade
- Khng c mt kin thc g v Facade v gi tham chiu n n.
25
d. Mu lin quan
Abstract Factory c th c s dng cng vi Facade cung cp mt giao
din cho vic to h thng con mt cch c lp h thng con. Abstract Factory cng c
th c s dng nh mt s thay th cho Facade n cc lp nn c bit.
Mediator tng t nh Facade ch tru tng chc nng ca mt lp tn
ti.Tuy nhin mc ch ca Mediator l tru tng mt cch chuyn quyn s giao tip
gia i tng cng tc, thng chc nng trung tm khng thuc v bt k i tng
cng tc no.Mt i tng cng tc vi Mediator c nhn v giao tip vi mediator
thay v giao tip vi nhau mt cch trc tip. Trong hon cnh no , Facade ch n
thun l tru tng giao din cho mt mt i tng h thng con lm n d s
dng hn, n khng nh ngha mt chc nng mi v lp h thng con khng h bit
g v n.
Thng th mt i tng Facade l . Do i tng Facade thng l
Singleton.
11. Flyweight
(Tn sut s dng :thp trung bnh)
a. Vn t ra
Mt vi ng dng c th c li t vic s dng cc i tng xuyn sut thit
k ca chng, nhng mt ci t khng tt s cn tr iu .Trong tnh hung ny
chng ta s dng mu tht k Flyweight gii quyt.
b. nh ngha
Mu thit k Flyweight l mu thit k c s dng vic chia x tr gip
mt lng ln cc i tng mt cch hiu qu.
Vic s dng mu ny cn ch rng :cc hiu ng ca Flyweight pattern i
hi rt nhiu vo vic n c s dng u v s dng n nh th no. S dng
Flyweight pattern khi tt c c iu sau y l ng:
- Mt ng dng s dng mt lng ln cc i tng.
- Gi thnh lu tr rt cao bi s lng cc i tng l rt ln.
- Hu ht trng thi ca cc i tng c th chu tc ng t bn ngoi.
- ng dng khng yu cu i tng ng nht. Khi cc i tng flyweight c
th b phn tch, vic kim tra tnh ng nht s tr v ng cho cc i tng
c nh ngha da trn cc khi nim khc nhau.
c. S UML
26
Flyweight (Character)
- Khai bo mt giao din qua Flyweight m c th nhn v hnh ng nm ngoi
trng thi
ConcreteFlyweight (CharacterA, CharacterB, ..., CharacterZ)
- Ci t giao din Flyweight v thm phn lu tr cho cc trng thi ngoi. -Mt i tng Concrete Flyweight phi c chia s. Bt c mt trng thi no
n lu tr u phi l bn ngoi, phi c lp vi ng cnh ca i tng
ConcreteFlyweight
UnsharedConcreteFlyweight ( not used )
- Khng phi tt c cc lp con u cn phi chia s. Giao din Flyweight cho
php chia s, nhng iu l khng bt buc. N l thng dng cho i tng
UnsharedConcreteFlyweight c i tng ConcreteFlyweight nh i tng
con cc mc trong cu trc i tng Flyweight.
FlyweightFactory (CharacterFactory)
- To v qun l i tng flyweight
- m bo rng flyweight c chia s mt cch ng n. Khi i tng khch
yu cu mt i tng flyweight cung cp mt th nghim tn ti hoc to
mt ci khc, nu n cha c.
Client (FlyweightApp)
- Duy tr mt tham chiu n Flyweight
- Tnh ton hoc lu tr trng thi ngoi ca Flyweight
d.Mu lin quan
Mu Flyweight thng kt hp vi mu Composite ci t cu trc phn cp
lgic trong gii hn ca mt s vng xon trc tip vi cc l chia s ca n.
Thng tt nht l ci t cc mu State v Strategy ging nh l flyweight.
27
12. Proxy
(Tn sut s dng :cao)
a. Vn t ra
L do iu khin truy nhp ti mt i tng l lm theo ton b qu trnh to
ra v khi u ca n cho ti tn khi thc s chng ta cn s dng n.Trong trng hp
ny ta nn dng mu thit k proxy. Proxy c th c ng dng ti bt c ni no m
cn c mt s tham chiu ti mt i tng linh hot hn, tinh xo hn so vi vic
s dng mt con tr n gin.
Sau y l mt vi trng hp thng thng trong proxy c vn dng:
- Mt remote proxy cung cp mt biu din (mt mu) cc b cho mt i tng
trong mt khng gian a ch khc.
- Mt virtual proxy to ra mt i tng c chi ph cao theo yu cu.
- Mt protection proxy iu khin vic truy nhp i tng gc. Cc protection
proxy rt hu ch khi cc i tng c cc quyn truy nhp khc nhau.
- Mt smart reference l s thay th cho mt con tr rng cho php thc hin cc
chc nng thm vo khi mt i tng c truy nhp. Cc trng hp s dng
in hnh:
+ m s tham chiu ti i tng thc, do n c th t ng gii phng
khi c khng nhiu cc tham chiu.
+ Ti mt i tng lin tc vo b nh khi n c tham chiu ln u tin.
+ Kim tra i tng thc c c kha hay khng trc khi n b truy
nhp m bo khng i tng no khc c th thay i n.
b. nh ngha
Cung cp mt i din cho mt i tng khc iu khin vic truy nhp n.
c. S UML
Proxy (MathProxy)
- Duy tr mt tham chiu cho proxy truy cp vo mt i tng thc.
Proxy c th tham kh n mt ch th nu nh giao din ca RealSubject v
Subject l nh nhau.
- Cung cp mt giao din xc nh Subject mt proxy c th thay th cho
i tng thc.
28
Cc mu Behavioral
Cc mu hnh vi l cc mu tp trung vo vn gii quyt cc thut ton v s
phn chia trch nhim gia cc i tng. Mu hnh vi khng ch miu t m hnh ca
cc i tng m cn miu t m hnh trao i thng tin gia chng; c trng ho cc
lung iu khin phc tp, gip chng ta tp trung hn vo vic xy dng cch thc
lin kt gia cc i tng thay v cc lung iu khin.
Mu hnh vi kiu lp s dng tnh k tha phn phi hnh vi gia cc lp.
Di y chng ta s nghin cu hai mu thuc loi : Temple Method v Interpreter.
Trong hai mu , Temple Method l mu n gin v thng dng hn. N nh ngha
tru tng tng bc ca mt thut ton; mi bc s dng mt hm tru tng hoc
mt hm nguyn thu. Cc lp con ca n lm sng t thut ton c th bng cch c
29
30
31
Handler (Approver)
- nh ngha mt giao din cho vic nm gi cc yu cu.
- Ci t lin kt ti cc Successor
ConcreteHandler (Director, VicePresident, President)
- Nm gi cc yu cu m n p ng
- C th truy nhp n
- Nu ConcreteHandle c th nm gi cc yu cu, n s lm nh vy, bng
khng n se gi cc yu cu ti cc succcesor
32
Client (ChainApp)
- Khi to yu cu ti i tng ConcreteHandler trn chui p ng
d. Kh nng ng dng ca mu
Mu Chain of Responsibility c cc kh nng v hn ch sau :
- Gim kt ni. Thay v mt i tng c kh nng x l yu cu cha tham chiu
n tt c cc i tng khc, n ch cn mt tham chiu n i tng tip
theo.
- Tng tnh linh hot v phn chia trch nhim cho cc i tng. C kh nng
thay i dy chuyn trong thi gian chy.
- Khng m bo c i tng x l yu cu.
Chng ta s dng mu Chain of Responsibility trong cc trng hp sau :
- Cc ln hn mt i tng c kh thc x l mt yu cu trong khi i tng c
th no x l yu cu li ph thuc vo ng cnh s dng.
- Mun gi yu cu n mt trong s vi i tng nhng khng xc nh i
tng c th no s x l yu cu .
- Tp cc i tng c kh nng x l yu cu l mt tp bin i.
e. Cc mu lin quan
Chain of Responsibility thng c kt hp trong mi quan h vi
composite.C mt thnh phn cha c th hnh ng nh l successor ca n.
14.Command
a.Vn t ra
i khi chng ta gp tnh hung trong cn phi gi yu cu n mt i
tng m khng bit c th v i tng nhn yu cu cng nh phng thc x l yu
cu. Ly v d v b cng c giao din ngi s dng cho php xy dng cc menu. R
rng, n khng th x l trc tip yu cu trn cc i tng menu v cch thc x l
ph thuc vo tng ng dng c th.
Mu Command cho php b cng c nh trn gi yu cu n cc i tng
cha xc nh bng cch bin chnh yu cu thnh mt i tng. Khi nim quan
trng nht ca mu ny l lp tru tng Command c chc nng nh ngha giao din
cho vic thi hnh cc yu cu. Trong trng hp n gin nht, ta ch cn nh ngha
mt th tc o Execute trn giao din . Cc lp con c th ca Command s xc nh
cp i tng nhn yu cu-cc thao tc bng cch lu tr mt tham chiu n i
tng nhn yu cu v nh ngha li th tc Execute gi cc th tc x l.
33
Command (Command)
- Khai bo mt giao din cho vic thc thi mt thao tc
ConcreteCommand (CalculatorCommand)
- nh ngha mt lin kt gia mt i tng Receiver v mt hnh ng
- Ci t Execute bng cch gi mt thao tc tng ng trn Receiver
Client (CommandApp)
- To ra mt i tng ConcreteCommand v thit lp i tng nhn ca
n
Invoker (User)
- ngh command thc hiu yu cu
Receiver (Calculator)
- Bit cch thc hin cc thao tc kt hp vic thc hin cc yu cu
34
d. ng dng :
Dng mu Command khi :
- Tham s ho cc i tng theo th tc m chng thi hnh, nh i tng
MenuItem trn.
- Xc nh, xp hng v thi hnh cc yu cu ti nhng thi im khc nhau.
- Cho php quay ngc. Th tc Execute ca lp Command c th lu li trng
thi cho php quay ngc cc bin i m n gy ra. Khi lp Command
tru tng cn nh ngha thm hm Unexecute o ngc cc bin i. Cc
commands c thi hnh s c lu trong mt danh sch, t cho php
undo v redo khng gii hn mc.
- Cn h tr ghi li cc commands c thi hnh thi hnh li trong trng
hp h thng gp s c.
- Thit k mt h thng vi cc th tc bc cao c xy dng da trn cc th
tc nguyn thu. Cu trc ny thng gp trong cc h thng thng tin h tr
phin giao dch. Mt phin giao dch l mt tp hp cc s thay i ln d
liu. Mu Command cung cp cch thc m t phin giao dch. N c giao din
chung cho php khi xng cc phin lm vc vi cng mt cch thc v cng
cho php d dng m rng h thng vi cc phin giao dch mi.
e. Cc mu lin quan
Mt Composite c th c s dng ci t cc MacroCommands.
Mt Memmento c th lu li cc trng thi Command yu cu phc hi li
cc hiu ng ca n.
Mt command phi c sao lu trc khi n c thay th bng cc hnh ng
trc nh l mt Prototype.
15. Interperter
a.Vn t ra
Nu mt dng bi ton c tn sut xut hin tng i ln, ngi ta thng biu
din cc th hin c th ca n bng cc cu trong mt ngn ng n gin. Sau ta c
th xy dng mt trnh bin dch gii quyt bi ton bng cch bin dch cc cu.
Ly v d, tm kim cc xu tho mn mt mu cho trc l mt bi ton thng
gp v cc biu din thng thng to thnh ngn ng dng din t cc mu ca
xu. Thay v xy dng tng thut ton ring bit tng ng mi mu vi mt tp cc
xu, ngi ta xy dng thut ton tng qut c th phin dch cc biu din thng
thng thnh tp cc xu tng ng.
Mu Interpreter miu t cch thc xy dng cu trc ng php cho nhng ngn
ng n gin, cch thc biu din cu trong ngn ng v cch thc phin dch cc cu
. Trong v d c th ny, n miu t cch thc xy dng cu trc ng php cho cc
biu din thng thng, cch thc xy dng biu din thng thng v cch thc phin
dch cc biu din thng thng .
Gi s cy trc ng php sau xc nh cc biu din thng thng :
expression ::= literal | alternation | sequence |
repetition |
'(' expression ')'
alternation ::= expression '|' expression
35
Mi
biu din thng thng xc nh bi cu trc ng php trn u c miu t bi mt
cy c php c thnh phn l cc i tng ca cc lp trn. Ly v d biu din
raining & (dogs | cats) *
c miu t bi cy sau :
Chng ta c th to ra trnh bin dch cho cc biu din trn bng cch nh
ngha th tc Interpret trn tng lp con ca RegularExpression. Hm ny nhn tham s
36
AbstractExpression (Expression)
- Khai bo mt giao din cho vic thc hin mt thao tc
TerminalExpression (
ThousandExpression,
HundredExpression,
TenExpression, OneExpression )
- Ci t mt thao tc thng dch lin kt vi nhng k php u cui
- Mt th nghim c yu cu cho mi k php u cui trong cu
NonterminalExpression ( not used )
- Mt lp nh vy c yu cu cho cc lut R::=R1R2..Rn trong dy c
php
- Duy tr mt bin th nghim ca kiu AbstractExpression cho mi mt k
php R1 n Rn
- Ci t mt phng thc thng dch cho cc k php khng phi u cui.
- Thng dch t gi quy cho cc bin i din t R1 n Rn
Context (Context)
- Cha thng tin ton cc cho vic thng dch
Client (InterpreterApp)
37
38
Vic tch bit gia c ch duyt v i tng List cho php chng ta xy dng
cc i tng iterator vi cc tiu khc nhau. Ly v d, hm FilteringListIterator ch
cung cp quyn truy cp n cc thnh phn tho mn iu kin lc.
b. nh ngha
Mu Iterator cung cp kh nng truy cp v duyt cc thnh phn ca mt tp
hp khng cn quan tm n cch thc biu din bn trong.
c. S UML
Iterator (AbstractIterator)
nh ngha mt giao din cho vic truy cp v duyt cc phn t
ConcreteIterator (Iterator)
Ci t giao din Iterator
Gi du vt ca v tr hin ti trong tp duyt
Aggregate (AbstractCollection)
nh ngha mt giao din to mt i tng Iterator
ConcreteAggregate (Collection)
Ci t giao din to Iterator tr v mt th nghim ng ca
ConcreteIterator.
d. ng dng
- H tr nhiu phng n duyt mt tp hp.
- n gin ho giao din tp hp.
- Cho php c ln hn mt cch thc duyt i vi mt tp hp ti mt thi
im.
ng dng trong cc trng hp sau :
39
17. Mediator
a. Vn t ra
Cch thit k hng i tng khuyn khch vic phn b cc ng x gia cc
i tng. Vc phn chia c th dn n cu trc trong tn ti rt nhiu lin kt
gia cc i tng m trong trng hp xu nht l tt c cc i tng u lin kt
trc tip vi nhau.
Ly v d v mt hp thoi s dng mt ca s biu din cc widget nh cc
nt, menu v entry field :
40
Biu lp :
41
b.nh ngha
Mediator dng ng gi cch thc tng tc ca mt tp hp cc i tng.
Gim bt lin kt v cho php thay i cch thc tng tc gia cc i tng.
c.Biu UML
Mediator (IChatroom)
- nh ngha mt giao din cho vic giao tip vi i tng cng tc.
ConcreteMediator (Chatroom)
- Xy dng cc hnh vi tng tc gia cc i tng colleague
- Xc nh cc i tng colleague
Colleague classes (Participant)
- Mi lp Colleague u xc nh i tng Mediator tng ng
- Mi i tng colleague trao i vi i tng mediator khi mun trao i
vi colleague khc.
d.ng dng
Mu Mediator c nhng u v nhc im sau :
- Gim vic chia lp con
- Gim lin kt gia cc colleagues.
- n gin ho giao thc gia i tng bng cch thay cc tng tc nhiu nhiu bng tng tc 1 - nhiu gia n v cc colleagues.
42
18. Memento
a. Vn t ra
i lc, vic lu li trng thi ca mt i tng l cn thit. V d khi xy dng
c ch checkpoints v undo phc hi h thng khi trng thi li. Tuy nhin cc i
tng thng phi che du mt vi hoc tt c cc thng tin trng thi ca mnh, lm
cho chng khng th c truy cp t ngoi.
Chng ta c th gii quyt vn ny vi mu Memento. memento l i tng
c chc nng lu li trng thi ni ti ca mt i tng khc gi l memento's
originator. C ch undo s yu cu mt memento t originator khi n cn khi phc li
trng thi ca originator. Cng ch originator mi c quyn truy xut v lu tr thng
tin vo memento v n trong sut i vi cc i tng cn li.
b. nh ngha
Memento l mu thit k c th lu li trng thi ca mt i tng khi phc
li sau ny m khng vi phm nguyn tc ng gi.
c. S UML
43
Memento
- Lu tr trng thi ca i tng Originator.
- Bo v, chng truy cp t cc i tng khc originator.
Originator
- To memento cha hnh chp trng thi ca mnh
- S dng memento khi phc v trng thi c.
Caretaker
- C trch nhim qun l cc memento.
- Khng thay i hoc truy xut ni dung ca memento.
d.ng dng
Memento c nhng c im
- m bo ranh gii ca s ng gi.
- n gin Originator. Trong cc thit k h tr khi phc trng thi khc,
Originator c chc nng lu tr cc phin bn trng thi ca mnh v do phi thi
hnh cc chc nng qun l lu tr.
- S dng memento c th gy ra chi ph ln nu Originator c nhiu thng tin
trng thi cn lu tr hoc nu vic ghi li v khi phc trng thi din ra vi tn
sut ln.
- Vic m bo ch originator mi c quyn truy cp memento l tng i kh
xy dng mt s ngn ng lp trnh.
- Chi ph n ca vic lu tr memento : caretaker c nhim v qun l cng nh
xo b cc memento n yu cu to ra. Tuy nhin n khng c bit kch thc
ca memento l bao nhiu v do c th tn nhiu khng gian b nh khi lu
tr memento.
ng dng khi
- Cn lu li trng thi ni b ca mt i tng c th khi phc v trn thi
sau ny.
- Xy dng giao din trc tip truy xut thng tin trng thi s phi by cu
trc v ph hng tnh ng gi ca i tng.
e. Cc mu lin quan
Cc Command c th s cc memento duy tr trng thi cho cc thao tc c
kh nng phc hi c.
Cc Memento c th c s dng cho vng lp sm hn.
44
19. Observer
a.nh ngha
Observer nh ngha mt ph thuc 1- nhiu gia cc i tng khi mt i
tng thay i trng thi th tt c cc phc thuc ca n c nhn bit v cp nht t
ng
bS UML
Subject (Stock)
- Hiu v cc Observer ca n. Mt s lng bt k Observer c th theo
du mt ch th no .
- Cung cp mt giao din cho vic gn v tch cc i tng Observer
ConcreteSubject (IBM)
- Lu tr trng thi ca ConcreteObserver cn quan tm.
- Gi tn hiu n cc observer ca n khi trng thi ca n thay i.
Observer (IInvestor)
- nh ngha mt giao din cp nht cho cc i tng m s nhn tn hiu
ca s thay i ti ch th.
ConcreteObserver (Investor)
- Duy tr mt tham chiu ti mt i tng ConcreteSubject.
- Lu tr cc trng thi c nh.
- Ci t giao din cp nht ca Observer gi cc trng thi c nh ca
n.
c. Mu lin quan
Bng vic ng gi cc ng ngha cp nht phc tp, ChangeManager hot ng
nh mt Mediator gia cc ch th v cc Observer.
ChangeManager c th s dng mu Singleton cho vic truy nhp n l ng
nht v tng th.
45
20. Sate
a. nh ngha
Observer l mu thit k cho php mt i tng thay i cc hnh vi ca n khi
cc trng thi bn trong ca n thay i. i tng s xut hin thay i cc lp ca
n.
b. S UML
Context (Account)
- nh ngha giao din m i tng khch quan tm
- Duy tr mt th nghim ca mt lp ConcreteState m nh ngha
trng thi hin ti
State (State)
- nh ngha mt giao din cho vic ng gi hnh vi kt hp vi
trng thi c bit ca Context.
Concrete State (RedState, SilverState, GoldState)
- Mi lp con ci t mt hnh vi kt hp vi mt trng thi ca
Context.
c. Cc mu lin quan
Mu Flyweight gii thch khi no cc i tng State c th c phn tch v
c phn tch nh th no.
Cc i tng State thng l cc Singleton.
21.Strategy
a. nh ngha
Strategy l mu thit k dng nh ngha mt h cc thut ton, ng gi mi
thut ton v lm cho chng c kh nng thay i d dng.Strategy cho php gi
thut ty bin mt cch c lp ti cc Client s dng n.
b.S UML
46
Strategy (SortStrategy)
- Khai bo mt giao din thng thng ti tt c cc gii thut c h tr.
Context s dng giao din ny gi cc gii thut c nh ngha bi mt
ConcreteStrategy.
ConcreteStrategy (QuickSort, ShellSort, MergeSort)
- Ci t gii thut s dng giao din Strategy
Context (SortedList)
- c cu hnh vi mt i tng ConcreteStrategy
- Duy tr mt tham chiu ti mt i tng Stategy
- C th nh ngha mt giao din cho Strategy truy nhp d liu ca n.
c.Cc mu lin quan
Cc i tng Strategy thng to ra cc Flyweight tt hn.
22.Template Method
a. nh ngha
Template Method l mu xc nh sn ca mt gii thut trong mt thao tc, theo
mt s bc ca cc phn lp. Template Method cho php cc lp con xc nh li
chc chn mt s bc ca mt gii thut bn ngoi cu trc ca gii thut .
b. S UML
AbstractClass:
- nh ngha cc primitive operation (thao tc nguyn thy) tru tng, cc thao
tc ny nh ngha cc lp con c th thc hin cc bc ca mt gii thut.
47
23.Visitor
a. nh ngha
Visitor l mu thit k xc nh sn ca mt gii thut trong mt thao tc, theo
mt s bc ca cc phn lp. Template Method cho php cc lp con xc nh li
chc chn mt s bc ca mt gii thut bn ngoi cu trc ca gii thut .
b. S UML
48
Visitor:
+ a ra mt thao tc Visit cho mi lp ca ConcreteElement trong cu trc i
tng. Tn v du hiu ca cc thao tc ny nhn dng lp gi yu cu Visit ti
visitor, n cho php visitor quyt nh lp c th no ca thnh phn c thm.
Sau visitor c th truy nhp thnh phn trc tip thng qua giao din c bit
ca n.
ConcreteVisitor:
+ Thc hin mi thao tc c a ra bi Visitor. Mi thao tc thc hin mt
phn ca gii thut nh ngha cho lp ph hp ca i tng trong cu trc.
ConcreteVisitor cung cp ng cnh cho gii thut v lu tr trng thi cc b
ca n.
Element:
+ nh ngha mt thao tc Accept, thao tc ny mang mt visitor nh l mt i
s.
ConcreteElement:
+ Thc hin mt thao tc Accept, thao tc ny mang mt visitor nh l mt i
s.
ObjectStructure:
+ C th m cc thnh phn ca n.
49
+ C th cung cp mt giao din mc cao cho php visitor thm cc thnh phn
ca n.
+ C th l mt composite hoc mt su tp nh danh sch hay tp hp.
c. Vn dng:
S dng Visitor pattern khi:
- Mt cu trc i tng cha ng nhiu lp ca cc i tng vi cc giao din
khc nhau, v ta mun thc hin cc thao tc trn cc i tng ny th i hi
cc lp c th ca chng.
- Nhiu thao tc khc nhau v khng c mi lin h no cn c thc hin trn
cc i tng trong mt cu trc i tng, v ta mun trnh lm hng cc lp
ca chng khi thc hin cc thao tc . Visitor cho php ta gi cc thao tc c
mi lin h vi nhau bng cch nh ngha chng trong mt lp. Khi mt cu
trc i tng c chia s bi nhiu ng dng, s dng Visitor t cc thao
tc ny vo trong cc ng dng cn chng.
- Cc lp nh ngha cc cu trc i tng him khi thay i, nhng ta mun
nh ngha cc thao tc mi trn cc cu trc. Thay i cc lp cu trc yu cu
nh ngha li giao din cho tt c cc visitor.
d. Mu lin quan
Cc Visitor c th c s dng cung cp mt thao tc trn mt cu trc i
tng c nh ngha bi mu Composite. Visitor c th c cung cp lm thng
dch.
I.Framework v idom
C Framework v idom c lin quan n mu, nhng gia chng c s khc
nhau r rng.
Framework th tng qut hn v c th p dng cho mt lnh vc c th.V d
Framework ti chnh s cha cc lp v ti chnh trong cc mi quan h c xc nh
bi cc mu thit k, t framework ny c th pht trin to ra cc ng dng v ti
chnh.Framework l mt tp cc lp c ng gi c th dng li cho cc ng dng
c th. ng dng thc hin Customize cc lp ny nh k tha, dn xut to ra cc
lp mi phc v cho mc ch ca ng dng.Framework phi c c nhng c im
l : nh gn,v y d customize, tnh khi qut cao,... Tp cc lp trong framework
c ci t v thit lp cc mi quan h theo cc mu design pattern.
50
51
Cu trc mt Codon
52
S cc lp ca ng dng
Player
Piece
PieceRect
Block
BlockRect
Roo
Knigh
Bishop
Game
Board
Piece
Factory
Quee
King
Helper Classes
Position
Calculator
Factory
Board
Decorator
Board
Initializer
Pawn
Killed Pieces
Manager
Position
Calculator
Block
Factory
White Block
Black Block
53