15

Design Pattern for Dummies

Embed Size (px)

DESCRIPTION

Design Pattern for Dummies

Citation preview

Design Patterns for Dummies GiithiuXin cho cc thnh vin trong din n congdongcviet !Mnh yu my tnh, v lp trnh t nh. Thng thng khi b mt vn no, mnh ln mng tm kim. Hu ht l tm ra c li gii nh cc bn khp ni tng hi v tng tr li. Thit ngh mnh cng nn c mt cht ng gp g ngc li cho cng ng lp trnh vin, d t d nhiu. Qua qu trnh t hc v tm ti, c khi nghe ti mt ngn ng mi no l mnh tm sch c v thc hnh, nay cng tri qua mt s ngn ng v IDE sau: u tin l lp trnh file .bat(trong MS-Dos), ri Foxpro, Pascal,C,C++,Visual Basic 3.0, Java, Visual Basic 6, Visual C++6.0 MFC, Visual J++ 6.0, VisualBasic.Net, HMTL,Asp, Javascript, PHP, v gn y nht l C# vASP.net. Mnh nhn thy tt c ngn ng ch l cng c, v mc ch ca chng l to ra sn phm. Cng c no cng c im mnh, im yu, nhng nu bn s dng khng ng cch th khng th to ra mt sn phm tt.Vy lm th no s dng cng c mt cch ng cch. chnh l t duy gii thut lp trnh. T duy v gii thut l cch chng ta tru tng bi ton thnh tng bc nh, tng bc, v lp rp chng thnh mt sn phm ng.V d xy dng mt cn nh, cc bn cn chun b gch, ct, xi mng, nc, g, ngi lp Khi c nguyn vt liu, cc bn bt tay thc hin tng bc nh xy dng mng nh, xy dng cc bc tng, lp ngiTrc y mi ngi lp trnh theo phng php th tc, chia mt vn ln thnh nhiu phn nh khc nhau v x l tng phn mt theo ng trnh t. y l mt phng php tt v tng c p dng trong mt thi gian di. Tuy nhin khi chng trnh ngy mt cng ln, vic duy tr v pht trin hng trm ngn th tc l mt cng vic kh khn, tn chi ph v d sai st. Khi phng php lp trnh hng i tng ra i. Phng php ny cng chia mt bi ton ln thnh cc phn nh, nhng cc phn nh ny c ng gi vo tng i tng, cc i tng ny gn gi vi thc t hn rt nhiu, nn vic pht trin phn mm ngy cng d tip cn vi mi ngi.V d lp rp mt ci ti vi, chng ta c i tng mn hnh, i tng mainboard, i tng loa, i tng remote sau lp li vi nhau. Yahooo! Tht d dng ng khng cc bn.Trong topic ny mnh khng c nh gii thiu v lp trnh hng i tng, v sch v v ch ny c qu nhiu, t ting anh qua ting vit, v t nhiu cc bn vo din n ny u nm qua.Vy ch tht s ca topic ny l g?C ai trong cc bn tng t cu hi ti c kh nng xy 1 cn nh, cn nh 1 tng, 2 tng thm ch 3 tng. Nhng khng bit xy cn nh 100 tng th sao? i vi cn nh 3 tng, khi c sai st, hay thay i tng 2, bn c th sa, hoc thm ch p b v lm li, nhng i vi cn nh 100 tng, b sai st tng th 3, chng l bn p b c 97 tng cn li?V l nguyn nhn ra i ca mt th gi l Design Patterns Cc Mu Thit K. Cc bn chc tng nghe ai ni ti mu thit k, ng vy, ti ngh bn nghe ni n n trong lnh vc xy dng kin trc. V gi y, chng ta s ni ti n trong lnh vc xy dng phn mm. Vy mu thit k l g: Ni nm na n l nhng gii php gii quyt nhng vn thng gp trong pht trin phn mm theo hng i tng. N l nhng bn mu, ta da vo xy dng nn nhng i tng. Vy li ch ca n th no? l n gip ta c nhng i tng mm do, d thay i, d bo tr. V v sao mu thit k li dnh dng ti lp trnh hng i tng. Tht ra th n b sung cho lp trnh hng i tng, n m rng kh nng to ln cho lp trnh hng i tng.Gn y khi mnh c dp c ti Design Patterns, mnh tht s thy n cun ht, rt c ch cho dn lp trnh. Tuy nhin ti liu v design patterns cng khng nhiu(mnh bit khong hn chc cun), ngn ng ch yu l ting anh, ti liu ting vit th t, chc ch c 1 cun (do MKPUB pht hnh, mnh cha c c, v mnh tnh, khng Tp.HCMnn khng mua c). Cch tip cn vn ca mi sch cng rt khc nhau, c khi rt chuyn ngnh, v tru tng, nhiu khi gy kh khn cho c ngi bn x ch khng dm ni ti ngi Vit mnh.Vi tham vng ng gp cho cng ng, mnh s dch thut mt cun sch mnh cho l tng i d tip cn.Sau khi c qua mt s cun sch nh sau: Design Patterns: Elements of Reusable Object-Oriented Software (Do b t tc gi Erich Gamma, Richard Helm, Ralph Johnson, John M.Vlissides). Cun kinh in v y nht C# 3.0 Design Patterns: ByJudith Bishop. ( Nh xut bn Oreilly) Head First Design Patterns ( Nh xut bn Oreilly) Design Patterns: by Christopher G. Lasater ( Nh xut bn Wordware) C# Design Patterns: A Tutorial by James W.Cooper ( Nh xut bn Addison-Wesley) Design Patterns for Dummies: by Steve Holzner,PhD. ( Nh xut bn Wiley)Mnh quyt nh chn cun Design Patterns for Dummies, tc gi Steve Holzner,PhD gii thiu n cc bn. C cc nguyn nhn sau: Cch dn dt d hiu, v d sinh ng, ngn ng thn thin Khng s dng UML m t biu , ( s gy kh khn cho cc bn cha nm vng UML) S mu tng i y . S trang sch khng nhiu lm. Ch khong 300trang.Tuy nhin cc v d trong sch l c vit t Java. C th s gy ra lng tng mt cht cho cc bn s dng C#. Nhng cc bn cng bit cha ca C# chnh l cha ca Borland C, Borland C++, Delphi, Visual J++, nn cc bn s thy Java v C# khng khc bit lm.i vi cc bn cha th t mnh chuyn i m ngun t Java ->C# theo cc v d trong sch, mnh cng vit li cc v d theo C#. Tuy khng th hin 100% vic chuyn i, nhng vn ni bt c ca tc gi.V trnh anh ng ca mnh cha tt (ch t hc). Nn khng m bo dch st 100% tc gi. Mt khc vic dch thut, v chy chng trnh cng tn nhiu thi gian. Mi tun mnh s ng mt chng ca cun sch. Cun sch 12 chng. Tng thi gian trong 3 thng, cc bn s c lm quen vi hu ht cc mu thit k. C th thi gian trn so vi my cun sch ca SAM: Hc trong 24gi, s lm cc bn thy nn. Nhng lp trnh l mt ngh thut, m hc cch lm ch ngh thut th 3 thng chc chn cn cha . Mong cc bn hy kin nhn.Mi chng mnh s lp mt topic cc bn tin theo di v tranh lun.Thank all!

DP4Dummies Chng 1 Tng quan cc muDP

Chng 1: Xin chc mng, rc ri ca bn c gii quyt trit .Trong chng ny, chng ta s ni n: Gii thiu v Mu thit k Design Patterns l g? Hiu bit v tc dng ca Design Patterns M rng lp trnh hng i tng im s qua mt s mu Design PatternL mt lp trnh vin, bn bit rng tht kh khn nh chi tit nhng vic bn ang thc hin. V khi bn khng nm bt c tng qut cng vic, bn c th d dng b l nhng vic quan trng. Khi , m ngun bn ang vit c th vn cn lm vic tt p, nhng tr khi bn bao qut c bc tranh ln hn, lc m ngun bn vit mi thc s hon ho.Nhng vn nghim trng thc s thng xut hin sau khi bn chnh sa chng t nht mt ln. Nhng nh pht trin thng t mnh x l bng cch vit li m ngun v sa cc li. Tuy nhin trong mi trng cng vic, nhng nh lp trnh thng b phn ln thi gian bo tr, chnh sa nhng cng vic c hn l tp trung vo nhng sn phm mi.Bn thy rng tht v l khi c phi lm, ri sa, lm li, sa tip Gii php hp l nht l bn a ra c mt quy trnh tng quan cho vic thit k v bo tr, c nh vy, bn mi trnh c cc rc ri pht sinh khi mi trng ng dng thay i, hoc t nht bn cng gip cho vic bo tr, chnh sa d dng hn khi c pht sinh. tng ng sau cun sch ny l: Bn s s dng mt tp hp cc mu thit k Design Patterns lm n gin ha qu trnh trn. K hoch ny s gip bn c mt ci nhn tng qut. Mt mu thit k Design Pattern l mt gii php c kim nghim thnh cng khi i din mt vn lp trnh pht sinh c th. Khi bn quen thuc ht cc mu thit k trong sch ny, bn nhn vo mt chng trnh. -Bam!- Mt gii php ng n s xut hin trong tm tr bn, thay v bn phi p u vo tng trong v vng, gi bn c th ung dung ni y, ti s s dng mu Factory, mu Observer, hay mu Adapter l cha ni, mt s sch v thit k khuyn bn nn dnh phn ln thi gian phn tch v ln k hoch cho mt n. V p tht s y l mt ngi no i mt vi vn bn ang gp phi, h c gii php ng n cho n. V gi khi bn nhun nhuyn mu thit k, bn c th p dng cc thit k mt cch d dng.Lm sao tr thnh chuyn gia thit k trong lnh vc phn mm, iu m ai cng thm mun? Tht d dng, hy c cun sch ny, nghin ngm nhng mu thit k m ti dnh nhiu tm huyt vit. Bn khng cn phi nh mi th, bn ch cn bit l c nhng mu thit k . V khi bn i din vi mt vn thc t, su thm trong bn t nhin tht ln , c v ch ny c th dng mu Iterator Sau bn ch cn tm kim mu thit k trong cun sch ny, duyt qua cc v d bit phi lm g. V v vy, chng ny s l mt tour du lch nho nh, gip bn i qua mt s mu thit k tin dng v hu ch.Ch cn tm ra mu thit k thch hpim k diu ca Design Patterns l n gip cho cng vic ca bn d dng ti s dng, d m rng v bo tr. Khi bn thit k khng tt, phn mm ca bn khng c kh nng ti s dng v bo tr, khi gp vn pht sinh, bn s phi dnh nhiu thi gian, c khi l nhiu hn c lc bn vit ban u, ch l sa cha chng.V d: Bn ang mun to mt i tng Java, nhim v l c v phn tch mt ti liu XML. Bn cn phi to mt lp Parser (chuyn dng phn tch XML) sau bn to mt i tng ca lp ny. Bn thm ngh Ti gi mi vic vn n. Nhng thc t th c hng t lp Parser do ngi khc vit, v h lun mun s dng li nhng tnh nng c bit trong lp ca h. Nu bn c th s dng mu thit k Nh my Factory, gi y bn c th s dng bt c lp Parser no, k c ca nhng ngi khc, thay v c kh kh xi lp Parser do chnh bn vit ra. V v vy, chng trnh ca bn tr nn d m rng, ti s dng c v bo tr d dng.Ni cch khc, Mu thit k Design Patterns l nhng gii php gip cho ta c mt thit k tt khi i din nhng vn pht sinh trong vic lp trnh. Nhiu ngi gp vn ny, v gii quyt tt, vic ca bn l p dng chng. Bn khng cn phi ghi nh mi th, ch cn nhn ra u l mu thit k ph hp v t n vo ng ch.Tht tuyt ng khng cc bn.i nt v cun sch tn Gang of Four B t tc gi.Quyn sch l tp hp 23 mu thit k c pht hnh bi Erich Gamma, Richard Helm, Ralph Johnson v John Vlissides, trong mt nghin cu ca h nm 1995. Vi ta gc l Design Patterns: Elements of Reusable Object-Oriented Software. Tm dch Mu thit k: nhng thnh phn ti s dng trong lp trnh hng i tng. H c gii lp trnh gi l B t Gang of Four, hay GoF. (ND: B t y l n d vi Tn nhm nhc ni ting Gang Of Four ca Anh hay B t quyn lc Mafia trong tc phm B gi hay l b t quyn lc chnh tr ca Trung quc, VN cng c b t quyn lc ca Vietnam Next Top Model). c rt nhiu s thay i k t khi xut hin, mt s trong 23 mu c s dng nhiu, s khc t khi c s dng. Ti s ni n y 23 mu trong cun sch ny, nhng ti s nhn mnh nhng mu thng c s dng hn. V k c mu mi khng c trong sch ca GoF, trong chng 11.C mt s tht l, bn khng ch phi nh k tng mu thit k, bn phi hiu su sc v n, c th p dng ng n trong thc tin. Ti cng s lu nhiu v lp trnh hng i tng xuyn sut quyn sch ny. Lp trnh hng i tng OOP l mt bc tin tuyt vi trong lnh vc lp trnh. Nhng c qu nhiu lp trnh vin s dng chng mt cch ty tin, thiu chiu su, v iu gy ra nhiu rc ri tim n.Phn ln vic tm hiu nhng mu thit k chnh l vic m rng khi nim lp trnh hng i tng. V d: ng gi nhng g thay i nhiu nht (encapsulating what changes most), cch chuyn i mt quan h k tha is-a sang quan h kt hp has-a ( xem chng 2 bit chi tit) v ti s ni chi tit v chng.Hy bt u bng mu Mediator Pattern (Ngi trung gian)

Hnh bn trn l mt v d v mu thit k, mu Mediator. Hnh cho chng ta thy chc nng ca mt mu Mediator. Theo hnh ta ang c mt website vi 4 trang. Website cho php khch hng duyt qua kho hng v t mua. Khch hng c th i t trang ny qua trang khc theo ng v trn hnh. y c mt vn pht sinh. Ti tng trang, bn phi vit m nhn bit khi no khch hng mun nhy qua trang khc v kch hot trang . Ti mt trang bn c qu nhiu ng i ti trang khc, v v vy s pht sinh nhiu on code trng lp trn nhiu trang khc nhau.Bn c th s dng mu Mediator ng gi tt c cc ng dn ti trang vo mt module duy nht, v t n vo trong mt i tng Mediator. T by gi, tng trang ch cn phi thng bo bt c s thay i no cho Mediator, v Mediator t bit dn trang cn thit cho khch hng, nh trong hnh bn di.

Bn c th to ra mt Mediator vi chc nng dn trang. Ti y bn c th chnh sa v thay i d dng. chnh l chc nng ca Mediator (Ngi trung gian)Chuyn i vi mu thit k Adaptor (Ngi chuyn i)y l mt mu khc, mu chuyn i Adaptor.

Hy nhn vo hnh 1-3. u vo l mt i tng c. H thng tip nhn i tng c.Vi hnh 1-4. Khi h thng thay i, h thng khng tip nhn i tng c na, ch tip nhn i tng mi. (ND: thc ra hnh nh 1-4 c cht cha chnh xc, phn I only take new objects, nn v nh li)Hnh 1- 5. y l ni xut hin mu Adaptor (Ngi chuyn i). Mc ch l chuyn i i tng c, thnh i tng mi, khi h thng s sn sng tip nhn i tng ny.ND: Cc bn hy tng tng. Cc bn c mt chic tivi vi u cm in 3 chn. cm in nh bn l loi 2 chn. Bn ra ngoi ca tim, mua 1 cc chuyn i, t 3 chn ra 2 chn. Lc bn c th s dng c in 2 chn ri. Cc chuyn i t 3 chn ra 2 chn, chnh l AdaptorVn c gii quyt. Ai ni hc cc mu thit k l kh khn nh.ng trong mt i tng. Mu Proxy. (Ngi i din)y l mt mu khc. Mu Proxy. Mu ny ni rng, m bn vit ch tng tc vi i tng cc b nh hnh di

Thc t pht sinh, bn buc phi tng tc vi mt i tng xa, u trn th gii. Lm sao bn c th lm cho chng trnh ca bn tng tc vi mt i tng cc b trong khi thc t l n ang lm vic vi mt i tng xa. y mu Proxy (Ngi i din) xut hin. N l mt i tng nm bn trong chng trnh, lm trch nhim tng tc vi chng trnh, gip cho chng trnh tng rng n ang tng tc cc b, thay v tng tc vi mt i tng t xa. Bn trong, Proxy chu trch nhim kt ni vi i tng t xa. Nh hnh di

Bn s bit cch mu Proxy hot ng trong chng 9.i nt v mu Observer (Ngi quan st)Bn c th quen thuc vi mt vi mu trong sch ny, v d nh mu Observer ny chng hn.Mu Observer c th ng k vi h thng. Khi h thng c s thay i, h thng s thng bo cho Observer bit. Khi khng na cn, mu Observer s c g khi h thng.

Hnh 8 cho thy mu Observer cho php 1 observer ng k vi h thng. Hnh 9, cho php observer th 2 ng k vi h thng. Hin ti h thng ang lin lc vi 2 observer. Khi h thng pht sinh mt s kin c th no , n s thng bo vi c 2 observer nh hnh s 10.Ti c gng trnh by tt c cc Mu thit k theo cch d hiu, d tip cn nht. Bn s khng phi nhn vo ng biu , cng vi cc lp tru tng y phc tp na. Cc chng trong sch nhm vo cc c gi l lp trnh vin, rt hu ch cho cc bn, cho d cc bn khng c ht tt c cc mu. Cc mu thit k trong sch ny tr thnh cc tiu chun v lp trnh trn th gii, v chng hu dng cho cc bn, d bn ang trnh no. Hy vng rng, trong tng lai, khi bn i din vi chng trnh ca mnh, bn t nhin nhn ra: Aha, y chnh l mu Faade.