You are on page 1of 53

Design pattern

Mc lc
Li ni u .......................................................................................................... 3

A. Tng quan v Design pattern ............................................................... 4


I. Vn trong thit k phn mm hng i tng..................................... 4 II. Lch s design pattern .............................................................................. 4 III. Design pattern l g?................................................................................ 5

B. H thng cc mu design pattern ................................................. 6


I. H thng cc mu ...................................................................................... 6
1. NhmCreational ............................................................................................ 6 2. Nhm Structural ............................................................................................ 6 3. Nhm Behavioral........................................................................................... 6 4. Su liu chun ca mu ................................................................................. 6 5. Quy tc biu din mu trong UML................................................................ 7

II.Ni dung cc mu Design pattern .............................................................. 8


1. Abstract Factory ........................................................................................... 8 2. Builder........................................................................................................ 12 3. Factory Method ..........................................................................................13 4. Prototype ....................................................................................................15 5. Singleton.....................................................................................................16 6. Adapter .......................................................................................................18 7. Bridge .........................................................................................................19 8. Composite...................................................................................................20 9. Decorator....................................................................................................23 10. Faade.........................................................................................................24 11. Flyweight....................................................................................................26 12. Proxy ..........................................................................................................28 13. Chain of Responsibility..............................................................................30
1

14. Command ...................................................................................................33 15. Interperter...................................................................................................35 16. Iterator........................................................................................................38 17. Mediator.....................................................................................................40 18. Memento ....................................................................................................43 19. Observer.....................................................................................................45 20. State ...........................................................................................................46 21. Strategy ......................................................................................................46 22. Template Method ......................................................................................47 23. Visitor ........................................................................................................48

C. ng dng design pattern trong thc t phn tch thit k phn mm hng i tng ............................................................. 50
I. Framework v idom ................................................................................50 II. Kin trc Add Ins ................................................................................51

D.Cc mu thit k hin i.............................................................. 52


I. Gamma Patterns .....................................................................................52 II. Entity Pattern (datasim).........................................................................52 III. Concurrent Patterns...............................................................................52

E. Xy dng ng dng Chess s dng Design pattern...................... 53 F. Ti liu tham kho ........................................................................ 53
I. Sch........................................................................................................53 II. a ch website ......................................................................................53

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.

A.Tng quan v Design pattern.


I.Vn trong thit k phn mm hng i tng
Ngi ta ni rng, vic thit k mt phn mm hng i tng l mt cng vic kh, v vic thit k mt mt phn mm hng i tng phc v cho mc ch dng li cn kh hn. Chng ta phi tm ra nhng i tng ph hp,i din cho mt lp cc i tng. Sau thit k giao din v cy k tha cho chng, thit lp mi quan h gia chng.Thit k ca chng ta phi m bo l gii quyt c cc vn hin ti, c th tin hnh m rng trong tng lai m trnh phi thit k li phn mm. V mt tiu tr quan trng l phi nh gn. Vic thit k mt phn mm hng i tng phc v cho mc ch dng li l mt cng vic kh, phc tp v vy chng ta khng th mong ch thit k ca mnh s l ng, v m bo cc tiu tr trn ngay c. Thc t l n cn phi c th nghim sau vi ln v sau n s c sa cha li. ng trc mt vn , mt ngi phn tch thit k tt c th a ra nhiu phng n gii quyt, anh ta phi duyt qua tt c cc phng n v ri chn ra cho mnh mt phng n tt nht.Phng n tt nht ny s c anh ta dng i dng li nhiu ln, v dng mi khi gp vn tng t. M trong phn tch thit k phn mm hng i tng ta lun gp li nhng vn tng t nh nhau.

II. Lch s design pattern


tng dng mu xut pht t ngnh kin trc, Alexander, Ishikawa,Silverstein,Jacobson,Fiksdahl-King v Angel (1977) ln u tin a ra tng dng cc mu chun trong thit k xy dng v truyn thng. H xc nh v lp su liu cc mu c lin quan c th dng gii quyt cc vn thng xy ra trong thit k cc cao c. Mi mu ny l mt cch thit k, chng c pht trin hng trm nm nh l cc gii php cho cc vn m ngi ta lm trong lnh vc xy dng thng gp. Cc gii php tt nht c c ngy hm nay l qua mt qu trnh sng lc t nhin. Mc d nghnh cng ngh phn mm khng c lch s pht trin lu di nh nghnh kin trc, xy dng nhng Cng ngh phn mm l mt nghnh cng nghip tin tin, tip thu tt c nhng g tt p nht t cc nghnh khc. Mu c xem l gii php tt gii quyt vn xy dng h thng phn mm. Sut nhng nm u 1990,thit k mu c tho lun cc hi tho workshop, sau ngi ta n lc a ra danh sch cc mu v lp su liu v chng. Nhng ngi tham gia b dn vo vic cn thit phi cung cp mt s kiu cu trc mt mc quan nim cao hn i tng v lp cu trc ny c th c dng t chc cc lp. y l kt qu ca s nhn thc c rng vic dng cc k thut hng i tng c lp s khng mang li nhng ci tin ng k i vi cht lng cng nh hiu qu ca cng vic pht trin phn mm. Mu c xem l cch t chc vic pht trin hng i tng, cch ng gi cc kinh nghim ca nhng ngi i trc v rt hiu qu trong thc hnh. Nm 1994 ti hi ngh PLoP( Pattern Language of Programming Design) c t chc. Cng trong nm ny quyn sch Design patterns : Elements of Reusable Object Oriented Software (Gamma, Johnson,Helm v Vhissdes,1995) c xut bn ng vo thi im din ra hi ngh OOPSLA94. y l mt ti liu cn phi thai trong vic lm ni bt nh hng ca mu i vi vic pht trin phn mm, s ng
4

gp ca n l xy dng cc mu thnh cc danh mc (catalogue) vi nh dng chun c dng lm ti liu cho mi mu v ni ting vi tn Gang of Four (b t), v cc mu n thng c gi l cc mu Gang of Four. Cn rt nhiu cc cun sch khc xut hin trong 2 nm sau, v cc nh dng chun khc c a ra. Nm 2000 Evitts c tng kt v cch cc mu xm nhp vo th gii phn mm (sch ca ng lc by gi ch ni v nhng mu c th c s dng trong UML ch cha a ra khi nim nhng mu thit k mt cch tng qut). ng cng nhn Kent Beck v Ward Cunningham l nhng ngi pht trin nhng mu u tin vi SmallTalk trong cng vic ca h c bo co ti hi ngh OOPSLA87. C 5 mu m Kent Beck v Ward Cunningham tm ra trong vic kt hp cc ngi dng ca mt h thng m h ang thit k. Nm mu ny u c p dng thit k giao din ngi dng trong mi trng Windows.

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.

Mi quan h gia cc Pattern Design pattern khng phi l mt phn ca UML ct li,nhng n li c s dng rng ri trong thit k h thng hng i tng v UML cung cp cc c ch biu din mu di dng ho.

B. H thng cc mu design pattern.


I. H thng cc mu
H thng cc mu design pattern hin c 23 mu c nh ngha trong cun Design patterns Elements of Reusable Object Oriented Software. H thng cc mu ny c th ni l v ti u cho vic gii quyt ht cc vn ca bi ton phn tch thit k v xy dng phn mm trong thi im hin ti.H thng cc mu design pattern c chia thnh 3 nhm: Creational, nhm Structural,nhm behavioral. 1. NhmCreational Gm c 5 pattern: AbstractFactory, Abstract Method, Builder, Prototype, v Singleton. Nhm ny lin quan ti vic to ra cc th nghim (instance) ca i tng, tch bit vi cch c thc hin t ng dng. Mun xem xt thng tin ca cc mu trong nhm ny th phi da vo biu no ph thuc vo chnh mu , mu thin v hnh vi hay cu trc. 2. Nhm Structural Gm c 7 mu : Adapter, Bridge,Composite,Decorator,Facade,Proxy,v Flyweight.Nhm ny lin quan ti cc quan h cu trc gia cc th nghim, dng k tha,kt tp, tng tc. xem thng tin v mu ny phi da vo biu lp ca mu. 3. Nhm Behavioral gm c 11 mu : Interpreter,Template Method,Chain of Responsibility,Command, Iterator,Mediator,Memento,Observer,State,Strategy v Visitor.Nhm ny lin quan n cc quan h gn trch nhim cung cp cc chc nng gia cc i tng trong h thng. i vi cc mu thuc nhm ny ta c th da vo biu cng tc v biu din tin. Biu cng tc v biu din tin s gii thch cho ta cch chuyn giao ca cc chc nng. 4. Su liu chun ca mu Mu c phn loi thnh 2 nhm Pattern catalogue (danh mc mu) v pattern language (ngn ng mu). Mt pattern catalogue l mt nhm mu c quan h vi nhau c th c s dng cng nhau hoc c lp. Mt pattern language s lp su liu mu cho cc mu lm cng nhau v c th c p dng gii quyt cc vn trong mt lnh vc no .Cc mu c lp su liu bng cch dng cc template, cc template cung cp cc heading bn di c cha chi tit ca mu v cch thc n lm vic cho php ngi dng bit mu d c thch hp vi vn ca h hay khng, nu c th p dng mu ny gii quyt vn . C 4 loi template khc nhau, hai trong s thng c s dng nht l Coplien v Gamma.Cc heading c lit k di y l template ca Coplien - Name Tn ca mu, m t tng, gii php theo mt s cch - Problem - Vn m mu gip gii quyt - Context - Ng cnh ng dng ca mu (kin trc hoc nghip v) v cc yu t chnh mu lm vic thnh cng trong mt tnh hung no . - Force Cc rng buc hoc cc vn phi c gii quyt bi mu; chng to ra s mt cn i, mu s gip ta cn i. - Solution - Gii php cn i cc rng buc xung t v lm cho hp vi ng cnh - Sketch - Bn phc tho tng trng ca cc rng buc v cch gii quyt chng. - Resulting context - Ng cnh sau khi thay i gii php.
7

- 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

K hiu cho mu cng tc

Cc vai tr lin quan trong mu Facade

II.Ni dung cc mu Design pattern


Nhm Creational 1.Abstract factory: (tn sut s dng : cao trung bnh) a. Vn t ra Chng ta c th thy trong cc h iu hnh giao din ho, mt b cng c mun cung cp mt giao din ngi dng da trn chun look - and feel, chng hn nh chng trnh trnh din ti liu power point.C rt nhiu kiu giao din lookand feel v c nhng hnh vi giao din ngi dng khc nhau c th hin y nh thanh cun ti liu (scroll bar), ca s (window), nt bm (button), hp son tho (editbox),...Nu xem chng l cc i tng th chng ta thy chng c mt s c im v hnh vi kh ging nhau v mt hnh thc nhng li khc nhau v cch thc hin. Chng hn i tng button v window, editbox c cng cc thuc tnh l chiu rng, chiu cao,to , C cc phng thc l Resize(), SetPosition(),...Tuy nhin cc i tng ny khng th gp chung vo mt lp c v theo nguyn l xy dng lp th cc i tng thuc lp phi c cc phng thc hot ng ging nhau. Trong khi y tuy rng cc i tng c cng giao din nhng cch thc hin cc hnh vi tng ng li hon ton khc nhau.

Vn t ra l phi xy dng mt lp tng qut, c th cha ht c nhng im chung ca cc i tng ny t c th d dng s dng li, ta gi lp ny l WidgetFactory.Cc lp ca cc i tng window, button,editbox k tha t lp ny.Trong thit k hng i tng, xy dng mt m hnh cc lp nh th c ti u ho nh sau:

Lp WidgetFactory c 2 phng thc l CreateScrollBar() v CreateWindow()y l lp giao din tru tng tng qut cho tt c cc MotifWidgetFactory v PMWidgetFactory. Cc lp MotifWidgeFactory v PMWidgetFactory k tha trc tip t lp WidgetFactory. Trong s trn cn c 2 nhm lp Window v ScrollBar, chng u l cc lp tru tng. T lp Window sinh ra cc lp con c th l PMWindow v MotifWindow. T lp ScrollBar sinh ra cc lp con c th l PMScrollBar v MotifScrollBar.Cc i tng thuc lp ny c cc i tng thuc lp Factory (MotifWidgetFactory v PMWidgetFactory) gi trong cc hm to i tng. i tng trong ng dng (i tng khch - client) ch thng qua lp giao din ca cc i tng MotifWidgetFactory v PMWidgetFactory v cc i tng tru tng Window v ScrollBar lm vic vi cc i tng PMWindow, MotifWindow, PMScrollBar,MotifScrollBar. iu ny c c nh c ch binding trong cc ngn ng h tr lp trnh hng i tng nh C++,C#,Java, Small Talk,Cc i tng PMWindow, MotifWindow, PMScrollBar,MotifScrollBar c sinh ra vo thi gian chy chng trnh, nn trnh ng dng (i tng thuc lp client) ch cn gi mt con tr tr n i tng thuc lp WidgetFactory, v thay i a ch tr n n c th lm vic vi tt c cc i tng trn.Nhng tnh hung thit k nh th ny thng c cng mt cch gii quyt c chng t l ti u. N c tng qut ho thnh mt mu thit k gi l AbstractFactory. b. nh ngha: Mu AbstractFactory l mt mu thit k m cung cp cho trnh khch mt giao din cho mt h hoc mt tp cc i tng thuc cc lp khc nhau nhng c cng chung giao din vi nhau m khng phi trc tip lm vic vi tng lp con c th. c. Lc UML

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

Ci t cho lp MotifWidgetFactory v PMWidgeFactory nh sau: class MotifWidgetFactory:public WidgetFactory { public: Window* CreateWindow() { return new MotifWindow(); } ScrollBar* CreateScrollBar() { return new MotifScrollBar(); } }; class PMWidgetFactory:public WidgetFactory { public: Window* CreateWindow() { return new PMWindow(); } ScrollBar* CreateScrollBar() { return new PMScrollBar(); } }; Trong cc lp i tng Window c nh ngha nh sau: class Window { //Cc thuc tnh v cc phng thc tnh v o nh ngha ti y }; class MotifWindow:public Window { //Cc thuc tnh v cc phng thc nh ngha ti y }; class PMWindow:public Window { //Cc thuc tnh v cc phng thc nh ngha ti y }; Cc lp thuc nhm ScrollBar. class ScrollBar { //Cc thuc tnh v cc phng thc tnh v o nh ngha ti y }; class MotifScrollBar:public ScrollBar

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

- Chu trch nhim cho vic to ra v duy tr th nghim ng nht ca chnh n. d. Mu lin quan C rt nhiu mu c th ci t b sung t vic s dng Singleton, chng hn nh Abstract Factory, Builder, v Prototype. Tng kt v nhm Creational Pattern C 2 cch thng dng nht tham s ho mt h thng bng cc lp ca i tng m n to. Mt cch l chia nh n thnh cc lp con to i tng tng ng. iu ny tng ng vi vic chng ta s dng mu Factory Method. im hn ch chnh ca cch tip cn ny l i hi phi to mt lp mi khi thay i lp dn xut.Ging nh kiu thc nc.Chng hn mt dn xut t to ra bng Abstract Factory, sau chng ta phi ln lp khi to ny.

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

Cc thnh phn tham gia: Target:nh ngha mt min giao din c bit m Client s dng. Client: cng tc vi cc i tng tng thch vi giao din Target. Adaptee: nh ngha mt giao din tn ti m cn phi lm bin i cho thch hp. Adapter: lm tng thch giao din ca Adaptee vi giao din ca Target.

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

- C hai, cc abstraction v cc thnh phn ci t ca chng nn c kh nng m rng bng vic phn chia lp. Trong trng hp ny, Bridge pattern cho php ta kt hp cc abstraction v cc thnh phn b sung thm khc nhau v m rng chng mt cch c lp. - Thay i trong thnh phn c b sung thm ca mt abstraction m khng nh hng i vi cc client, tc l m ca chng khng nn em bin dch li. - Ta mun lm n i hon ton cc thnh phn b sung thm ca mt abstraction khi cc client. - Ta c mt s pht trin rt nhanh cc lp, h thng phn cp lp ch ra l cn phi tch mt i tng thnh hai phn. - Ta mun thnh phn b sung thm c mt trong nhiu i tng, v vic ny li c che khi client (client khng thy c). b. nh ngha Bridge l mu thit k dng tch ring mt lp tru tng khi thnh phn ci t ca n c c hai ci c th bin i c lp. c.S UML

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

Composite c p dng trong cc trng hp sau : - Ta mun biu din h thng phn lp b phn ton b ca cc i tng - Ta mun cc client c kh nng b qua s khc nhau gia cc thnh phn ca cc i tng v cc i tng ring l. Cc client s i x vi cc i tng trong cu trc composite mt cch thng nht. b. nh ngha Composite l mu thit k dng to ra cc i tng trong cc cu trc cy biu din h thng phn lp: b phn ton b. Composite cho php cc client tc ng n tng i tng v cc thnh phn ca i tng mt cch thng nht. c. Biu UML

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.

Chng ta s dng mu Facade gii quyt vn ny b. nh ngha Mu Facade cung cp mt giao din thng nht cho mt tp cc giao din trong mt h thng con. Facade nh ngha mt giao din mc cao hn, giao din ny lm cho h thng con c s dng d dng hn. c. S UML

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

- iu khin truy cp ti i tng thc v c th chu trch nhim to ra v xo n i. - Trong cc nhim v khc ph thuc vo tng loi proxy Remote proxies chu trch nhim cho vic m ho mt yu cu v cc tham s ca n v truyn yu cu m ho cho ch th trong khng gian a ch khc. Virtual proxies c th thm phn thng tin m v ch th thc chng c th tr hon truy nhp n. Protection proxies kim tra i tng gi c yu cu quyn truy nhp thc hin mt yu cu. Subject (IMath) - nh ngha mt giao din chung cho ch th thc v Proxy proxy c th s dng mi ni m mt RealSubject mong i. RealSubject (Math) - nh ngha i tng thc m proxy i din. d. Mu lin quan Mt Adapter cung cp mt giao din khc vi i tng m n thch nghi. Trong trng hp ny, mt Proxy cung cp cng mt giao din nh vy ging nh mt ch th. Mc d decorator c th c ci t tng t nh cc proxy, decorator c mt mc ch khc. Mt decorator ph thm nhiu nhim v cho mt i tng nhng ngc li mt proxy iu khin truy cp n mt i tng. Proxy tu bin theo nhiu cp khc nhau m chng c th s c ci t ging nh mt decorator. Mt proxy bo v c th c ci t chnh xc nh mt decorator. Mt khc mt proxy truy cp i tng t xa s khng cha mt tham chiu trc tip n ch th thc s nhng ch duy nht c mt tham chiu trc tip, ging nh ID ca host v a ch trn host vy. Mt proxy o s bt u vi mt tham chiu gin tip chng hn nh tn file nhng rt cuc ri cng s t c mt tham chiu trc tip.

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

th ho cc hm tru tng. Mu Interpreter din t vn phm nh mt h thng phn cp ca cc lp v trnh phin dch nh mt th tc tc ng ln cc th hin ca cc lp . Mu hnh vi kiu i tng li s dng i tng thnh phn thay v tha k. Mt vi mu miu t cch thc mt nhm cc i tng ngang hng hp tc vi nhau thi hnh cc tc v m khng mt i tng ring l no c th t thi hnh. Mt vn quan trng c t ra y l bng cch no cc i tng ngang hng bit c s tn ti ca nhau. Cch n gin nht v cng d tha nht l lu tr cc tham chiu trc tip n nhau trong cc i tng ngang hng. Mu Mediator trnh s tha thi ny bng cch xy dng kt ni trung gian, lin kt gin tip cc i tng ngang hng. Mu Chain of Responsibility xy dng m hnh lin kt thm ch cn lng hn. N cho php gi yu cu n mt i tng thng qua chui cc i tng ng c. Mi ng c vin c kh nng thc hin yu cu tu thuc vo cc iu kin trong thi gian chy. S lng ng c vin l mt con s m v ta c th la chn nhng ng c vin no s tham gia vo chui trong thi gian chy. Mu Observer xy dng v vn hnh mt s ph thuc gia cc i tng. Mt v d c th ca mu ny l m hnh Model/View/Controller ca Smalltalk trong tt c cc views ca model u c thng bo khi trng thi ca model c s thay i. Mt s mu hnh vi khc li quan tm n vic ng gi cc hnh vi vo mt i tng v u thc cc yu cu cho n. Mu Strategy ng gi mt thut ton trong mt i tng, xy dng c ch khin cho vc xc nh v thay i thut ton m i tng s dng tr nn n gin. Trong khi mu Command li ng gi mt yu cu vo mt i tng; lm cho n c th c truyn nh mt tham s, c lu tr trong mt history list hoc thao tc theo nhng cch thc khc. Mu State ng gi cc trng thi ca mt i tng, lm cho i tng c kh nng thay i hnh vi ca mnh khi trng thi thay i. Mu Visitor ng gi cc hnh vi vn c phn phi trong nhiu lp v mu Iterator tru tng ho cch thc truy cp v duyt cc i tng trong mt tp hp. 13. Mu Chain of Responsibility a.Vn t ra Xt bi ton xy dng h thng tr gip ph thuc ng cnh cho mt giao din ho; trong ngi s dng c th ly thng tin tr gip v bt c thnh phn no ca giao din bng cch n vo n. Thng tin tr gip cung cp ph thuc vo thnh phn giao din c chn v ng cnh ca n. Ly v d mt nt trong mt hp thoi s c thng tin tr gip khc vi mt nt tng t trong ca s chnh. Ngoi ra nu khng c thng tin tr gip no c cung cp cho thnh phn c chn ca giao din, h thng tr gip s hin th thng tin tr gip tng qut hn v ng cnh, ly v d thng tin v hp thoi. Bi ton trn dn n mt hnh ng rt t nhin l t chc cc thng tin tr gip theo mc tng qut ca chng, t c th nht n tng qut nht. Ngoi ra chng ta cng d dng nhn thy rng yu cu tr gip s c x l bi mt trong s cc i tng giao din ngi dng ph thuc vo ng cnh s dng v tnh chi tit ca thng tin tr gip c cung cp.

30

Vn t ra y l i tng khi xng yu cu khng h bit yu cu s c x l bi i tng c th no. V th chng ta cn c c ch tch ri chng, v mu Chain of Responsibility xy dng m hnh thc hin iu ny :

Theo m hnh ny, i tng u tin trong dy chuyn s nhn c yu cu c th x l yu cu hoc chuyn n cho i tng k tip; iu tng t cng xy ra vi i tng ny. Bng cch ny, i tng khi xng yu cu khng cn bit yu cu s c x l bi i tng no, n ch bit rng yu cu s c x l mt cch hp l nht. Gi s ngi s dng yu cu tr gip cho mt nt c tiu Print. Nt c t trong hp thoi PrintDialog. n lt mnh, hp thoi li c kh nng xc nh lp Application cha n. S tng tc sau s cho thy cch thc yu cu tr gip c truyn i dc theo dy chuyn :

Trong trng hp ny, c hai i tng aPrintButton v aPrintDialog u khng x l yu cu tr gip; v th yu cu ny c chuyn ti cho aApplication x l hoc b qua khng lm g. c kh nng chuyn yu cu dc theo dy chuyn v m bo tnh n ca cc i tng c th nhn yu cu (vi i tng khi xng yu cu), mi i tng trn dy chuyn u c chung mt giao din trong vic x l yu cu v chuyn yu cu cho i tng k tip. Ly v d, h thng tr gip c th nh ngha lp HelpHandler vi phng thc HandleHelp tng ng. Lp HelpHandler c th c ly lm lp cha ca cc lp m ta mun cung cp kh nng x l yu cu tr gip :

31

Cc lp Button, Dialog v Application s dng cc phng thc HandleHelp x l yu cu tr gip trong khi phng thc ny mc nh ch chuyn tip yu cu tr gip cho nt k tip. Khi cc lp con c th nh ngha li phng thc ny cung cp thng tin tr gip c th hoc ch s dng phng thc mc nh chuyn tip yu cu theo dy chuyn. b. nh ngha mu Mu Chain of Responsiblity dng trnh s lin kt trc tip gia i tng gi yu cu v i tng nhn yu cu khi yu cu c th c x l bi hn mt i tng. Mc ni cc i tng nhn yu cu thnh mt chui v gi yu cu theo chui cho n khi c mt i tng x l n. c. S UML

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

Theo cch ny, chng trnh s c nhim v to ra cc menu, menuitem v gn mi menuitem vi mt i tng thuc lp con c th ca Command. Khi ngi s dng chn mt menuitem, n s gi hm command->Execute() m khng cn con tr command tr n loi lp con c th no ca lp Command. Hm Execute() s c nhim v x l yu cu. b.nh ngha mu Mu Command ng gi yu cu nh l mt i tng, lm cho n c th c truyn nh mt tham s, c lu tr trong mt history list hoc thao tc theo nhng cch thc khc nhau. c.S UML

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

sequence ::= expression '&' expression repetition ::= expression '*' literal ::= 'a' | 'b' | 'c' | ... { 'a' | 'b' | 'c' | ... }* Mu Interpreter s dng cc lp din t cc quy lut ng php. Khi cu trc ng php trn c din t bi nm lp : lp tru tng RegularExpression v bn lp con ca n : LiteralExpression, AlternationExpression, SequenceExpression v RepetitionExpression trong ba lp cui c cc bin cha cc biu thc con.

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

u vo l ng cnh phin dch biu din bao gm xu u vo v thng tin v lng xu c ghp. N s tip tc ghp phn tip theo ca xu da trn ng cnh : VD : - LiteralExpression s kim tra xem u vo c trng vi bng ch ci n nh ngha khng. - AlternationExpression s kim tra xem thng tin u vo c phi l mt trong cc la chn ca n khng. - ... b.nh ngha Interpreter a ra mt ngn ng, xy dng cch din t ngn ng cng vi mt trnh phin dch s dng cch din t trn phin dch cc cu. c.S UML

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

To (hay mang li ) mt cy c php tru tng i din cho mt cu c th trong ng php c nh ngha.Cy c php tru tng ny xut pht t th nghim ca cc lp NonterminalExpression v TerminalExpression Yu cu mt thao tc thng dch. d.ng dng : S dng mu Interpreter khi cn phin dch mt ngn ng m ta c th miu t cc cu bng cu trc cy c php. Mu ny hot ng hiu qu nht khi : - Cu trc ng php n gin. Vi cc cu trc ng php phc tp, cu trc lp ca ng php tr nn qu ln v kh kim sot, vic to ra cc cy c php s tn thi gian v b nh. - Hiu qu khng phi l yu t quan trng nht. Cc cch thc bin dch hiu qu nht thng khng p dng trc tip mu Interpreter m phi bin i cc biu din thnh cc dng khc trc. e. Cc mu lin quan Cy c php tru tng l mt th nghim trong mu Composite. Flyweight ch ra cch chia s k php u cui trong phm vi ca cy c php tru tng. Interpreter thng s dng mt Iterator duyt cu trc. Visitor c th c s dng duy tr hnh vi trn mi nt trong cy c php tru tng ca lp. 16.Iterator a. Vn t ra Mt i tng tp hp nh l mt danh sch cng cung cp cho ta cc phng thc truy cp cc thnh phn ca n. Tuy nhin i lc chng ta cn duyt cc thnh phn ca danh sch theo nhng cch thc v tiu ch khc nhau. Chng ta khng nn lm phng giao din ca danh sch List vi cc phng thc cho cc cch thc duyt. Mu Iterator cho php chng ta duyt danh sch d dng bng cch tch ri chc nng truy cp v duyt ra khi danh sch v t vo i tng iterator. Lp Iterator s nh ngha mt giao din truy cp cc thnh phn ca danh sch, ng thi qun l cch thc duyt danh sch hin thi. V d :

Mi i tng thuc ListIterator qun l mt i tng List. Phng thc CurrentItem tr v i tng hin thi, First chuyn n i tng u tin cn Next chuyn sang i tng tip theo; IsDone kim tra xem qu trnh duyt hon tt cha.

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

- Truy cp cc thnh phn ca mt tp hp m khng cn quan tm n cch thc biu din bn trong. - H tr nhiu phng n duyt ca cc i tng tp hp. - Cung cp giao din chung cho vic duyt cc cu trc tp hp. e. Cc mu lin quan Iterator thng c s dng duyt mt cu trc quy nh Composite. a hnh mt Iterator da trn FactoryMethod to th nghim cho cc lp con tng ng ca Iterator. Memento thng c s dng cng vi Iterator.Mt Iterator c th s dng mt Memento nm bt trng thi ca mt Iterator. Iterator lu tr cc memento bn trong.

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 :

Thng cc widgets trong cng mt ca s s c s ph thuc ln nhau. Ly v d mt nt b disable khi mt entry field rng, vic thay i chn la trong listbox dn n thay i gi tr trong entry field ...

40

Mi dialog s c mt rng buc ring bit gia cc widgets ca n v th cho d nu hai dialog cng hin th cc widgets nh nhau nhng chng vn khng th s dng li cc lp widgets xy dng. Ta c th trnh vn ny bng cch xy dng i tng trung gian mediator c nhim v iu khin v xc nh tng tc gia mt nhm cc i tng. Khi cc i tng trong nhm khng cn lin kt trc tip vi nhau m ch cn lin kt vi i tng mediator. V d v vic thay i chn la trong listbox dn n thay i gi tr trong entry field s dng mediator FontDialogDirector : Biu i tng :

Biu din tin :

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

- Tru tng ho cch thc tng tc hp tc gia cc i tng. To ra s tch bit r rng hn gia cc tng tc ngoi v cc c tnh trong ca i tng. - iu khin trung tm: thay s phc tp trong tng tc bng s phc tp ti mediator. ng dng mediator vo trong cc trng hp sau : - Mt nhm cc i tng trao i thng tin mt cch r rng nhng kh phc tp dn n h thng cc kt ni khng c cu trc v kh hiu. - Vic s dng li mt i tng gp kh khn v n lin kt vi qu nhiu i tng khc. - Cho php tu bin mt ng x c phn tn trong vi lp m khng phi phn nhiu lp con. e. Cc mu lin quan Facade khc vi Mediator ch n tru tng mt h thng con ca cc i tng cung cp mt giao din tin ch hn. Giao thc ca n theo mt hng duy nht l, cc i tng Facade to ra cc yu cu ca cc lp h thng con nhng khng c chiu ngc li. Ngc li Mediator cho php cc hnh vi kt hp m cc i tng cng tc khng th cung cp v giao thc ny l khng a hng. Cc cng tc c th i giao tip vi Mediator bng cch s dng mu Observer.

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

- Ci t mt template method nh ngha sn ca mt gii thut. Template method ny gi cc thao tc nguyn thy cng nh cc thao tc c nh ngha trong AbstractClass hoc mt s cc i tng khc. ConcreteClass: - Thc hin cc thao tc nguyn thy thc hin cc bc ch ra trong cc lp con ca gii thut c.Vn dng Template Method nn s dng trong cc trng hp: - Thc hin cc phn c nh ca mt gii thut khi t n vo cc lp con thc hin hnh vi c th thay i. - Khi cc lp hnh vi thng thng nn c phn tch v khoanh vng trong mt lp thng thng trnh s ging nhau v m. - iu khin m rng cc lp con. Ta c th nh ngha mt template method, template method ny gi cc thao tc hook ti cc im c bit, bng cch cho php cc m rng ch ti cc im . d.Cc mu lin quan Cc template Method s dng s k tha thay i cc b phn ca mt gii thut . Cc Strategy s dng s y nhim thay i hon ton mt thut ton.

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.

C. ng dng design pattern trong thc t phn tch thit k phn mm hng i tng
ng dng ca design pattern trong thc t phn tch thit k phn mm hng i tng l rt ln. Hu nh c u c phn mm hng i tng th c design pattern. Design pattern c vn dng linh hot v di nhiu hnh thc khc nhau.Trong ni dung n mn hc ny chng ti xin trnh by mt vi ng dng in hnh ca Design pattern.

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

Idom l mt tp cc ch dn v cch ci t cc kha cnh ca mt h thng phn mm vit bng mt ngn ng c th.Coplien (1992) ln u tin xut bn mt tp cc idom cho vic dng ngn ng C++.Cc idom ny ghi li cc kinh nghim ca cc lp trnh vin chuyn nghip C++, t cc lp trnh vin khng chuyn c th gii quyt cc vn thng gp khi vit chng trnh bng C++.

II.Kin trc Add Ins


y l mt m hnh ng dng cho php to ra mt giao din ghp ni cc mun ng dng mt cch d dng. ng dng gm c nhn ng dng (core) v cc mun ghp ni l cc gi DLL. Cu hnh ca ng dng c lu vo cc file nh dng XML.

Global property thng l cc mu thc th (datasim) c th cu hnh cc thnh phn c. Resource : thng l cc lp singleton qun l ti nguyn tp trung bao gm - Icon Resource - Error Message Resource - Language Resource Chng c gp vo mt i tng qun l l SingletonResourceManager cung cp mi im truy cp ng nht trong i tng. Basic GUI layer : cung cp cc giao din ho c bn.Thng s dng cc mu Abstract Factory, Abstract Method Proxy, Facade v Memento (kt hp vi XML). Extensible Module Tree : y l phn quan trng ca nhn ng dng. N cung cp cc giao din ghp ni vi cc m un bn ngoi. Cc lp trong phn ny thng c ci t di dng cc Entity patterns (mu thc th), hay cn gi l cc Codon. Mi codon gm c :ID (name - ch duy nht mt tn cho mt codon), Label( nhn c th trng nhau) v Class (y l m thc thi ca codon ). Class ny thng l cc Command patterns.

51

Cu trc mt Codon

D.Cc mu thit k hin i


I.Gamma Patterns II.Entity Pattern (datasim) : Mu thc th Mu thc th l : - Mt lp ng - Khng c nhiu cc thnh phn thuc tnh v phng thc c nh - Cc thnh phn c th cu hnh c - N l th h ni tip ca mu Gamma patterns. c im ca mu thc th : - Rt phc tp - C th thao tc c bng cc cng c khc - S dng XML v cc h qun tr c s d liu cu hnh cc thnh phn - N l cht liu to ra giao din - Rt cn thit cho cc mi trng ng Nhng vn chuyn su ca mu ny ni dung ca n mn hc xin khng a ra y.Thng tin v mu ny c th tham kho ti trang web www.datasim.com. III.Concurrent Patterns : - y l mu thit k cu thnh nn cc h thng thi gian thc. - Cc i tng c phn tn - Tch hp vi tin trnh ca mu thc th. Mu ny thuc nhm gm c cc mu : - Service Access/Configuration - Event Handling - Synchronisation - Concurrency

E. Xy dng ng dng Chess s dng Design pattern

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 Killed Pieces Manager Position Calculator White Block Black Block Pawn

Block Factory

- Trong ng dng ny chng ti s dng cc mu thit k Decorator, Abstract Factory ,Factory Method gii quyt vn .

F. Ti liu tham kho


I. Sch 1.Design patterns Elements of Reusable Object Oriented Software 2. The design patterns SmallTalk Companion 3. Analysis Patterns: Reusable Object Models 4. Concurrent Programming in Java: Design Principles and Patterns 5. Pattern Languages of Program Design 6. Pattern Languages of Program Design 2 7. Pattern Languages of Program Design 3 8. ThinkInPatterns II. a ch website http://www.dofactory.com/Patterns http://patterndigest.com

53

You might also like