Professional Documents
Culture Documents
Gii thiu
Trnh by v design patterns[Gam95], mt cch tip cn da mu (pattern-based approach) c tc dng h tr cho pha thit k phn mm. (Nguyn do: Ch dng cc PP
phn tch thit k vn cha ...)
Lin h n cc tip cn tng t: analysis patterns, design heuristics, process patterns, ...
Ni dung
1. Dn nhp 2. Tng quan v mu thit k GoF 3. K tha v a hnh: c s cho cc mu GoF 4. Vi mu GoF tiu biu v ng dng 5. Cc tip cn tng t
Dn nhp
Xu hng s dng mu trong cng vic chuyn mn, trong hc tp:
Cc mu, khun c dng trong cc ngnh cng nghip khc nhau (in n, c, ...) Cc bi tp mu cho hc sinh, sinh vin Cc mu chng trnh Cc mu hng dn thit k giao din vi ngi dng ...
Dn nhp
Ngun gc ca mu thit k phn mm
Ngn ng? mu ca kin trc s C. Alexander [Alex77]: thit k nh bng cch lp rp cc khun mu c sn tng cho vic su tm v s dng cc mu phn mm Cc idiom trong lp tr?nh C++ [Cop92]
Dn nhp
Thut ng - Cc t: sample, pattern, template,... - Design patterns: Patterns in Objectoriented software design - a design pattern: an elegant solution to a specific problem in OO software design - Thut ng ting Vit...
nh ngha
nh ngha mt mu (pattern) ni chung: Mt mu l mt cp (vn , li gii) c th p dng trong nhiu tnh hung, ng cnh khc nhau. Mi mu thng bao gm cc b phn sau:
Tn Ni dung vn Li gii (phi tng qut c th dng trong nhiu tnh hung) Cc h qu mang li v v d p dng
Mu c ch
Cung ca p mo t interface cho vie c ta o la p ca c o i t ng (co lie n hev i nhau) ma kho ng ca n qui nh l p khi ta o mo i o i t ng Ta ch r i vie c xa y d ng (construction) mo t o i t ng ph c ta p kho i bie u die n cu a nosao cho cu ng mo t tie n trnh xa y d ng cotheta o c ca c bie u die n kha c nhau nh ngh a mo t interface eta o la p o i t ng nhng u y nhie m vie c instanciation cho ca c l p con (ca c l p ke th a) Qui nh loa i cu a ca c o i t ng ca n ta o ba ng ca ch du ng mo t o i t ng ma u, ta o m i nh va o sao che p o i t ng ma u na y. Ca i a t l p ma ch como t thehie n (o i t ng) duy nha t
Singleton
CA C MA U VE CA U TRU C L P hay O I T NG Te n
Adapter (adapteur) Bridge (Pont) Composite
Mu c ch
Do va n etng thch, thay o i interface cu a mo t l p tha nh mo t interface kha c phu h p v i ye u ca u ng i sdu ng l p. Ta ch r i ngngh a cu a mo t va n ekho i vie c ca i a t ; muc ch ecahai bopha n (ngngh a vaca i a t) cothethay o i o c la p nhau. Toch c ca c o i t ng theo ca u tru c pha n ca p da ng ca y; Ta t ca ca c o i t ng trong ca u tru c c thao ta c theo mo t ca ch thua n nha t nh nhau. Ga n the m tra ch nhie m cho o i t ng (mro ng ch c na ng) va o lu c chay (dynamically). Cung ca p mo t interface thua n nha t cho mo t ta p h p ca c interface trong mo t hetho ng con (subsystem). Sdu ng vie c chia seethao ta c hie u quatre n mo t sol ng l n o i t ng cnho (cha ng ha n paragraph, do ng, co t , ky t ...) ie u khie n mo t ca ch gia n tie p vie c truy xua t mo t o i t ng tho ng qua mo t o i t ng c u y nhie m.
Decorator (De corateur) Facade (Faade) Flyweight (Poids mouche) Proxy (Procuration)
CA C MA U VE NG X CU A L P hay O I T NG (1) Te n Mu c ch
Chain of Responsibility Kha c phu c vie c ghe p ca p gi a bog i va bonha n tho ng (Chane de ie p; Ca c o i t ng nha n tho ng ie p c ke t no i tha nh responsabilite s) mo t chuo i va tho ng ie p c chuye n doc theo chuo i na y e n khi ga p c o i t ng xlyno . Command Mo i ye u ca u (thc hie n mo t thao ta c na o o ) c bao (Commande) bo c tha nh mo t o i t ng. Ca c ye u ca u se c lu trva g i i nh ca c o i t ng. Interpreter Hotr vie c nh ngh a bie u die n va n pha m va botho ng (Interpreteur) d ch cho mo t ngo n ng . Iterator Truy xua t ca c pha n tcu a o i t ng da ng ta p h p tua n t (Ite r ateur) (list, array, ...) makho ng phu thuo c va o bie u die n be n trong cu a ca c pha n t . Mediator nh ngh a mo t o i t ng ebao bo c vie c giao tie p gi a (Me diateur) mo t soo i t ng v i nhau. Memento Hie u ch nh va trala i nh cutra ng tha i be n trong cu a o i t ng ma va n kho ng vi pha m vie c bao boc dlie u.
CA C MA U VE NG X CU A L P hay O I T NG (2) Te n
O bserver (O bservateur) State (Etat) Strategy (Strate gie) Template method (Patron de me thode) Visitor (Visiteur)
Mu c ch
t-nhie u gi nh ngh a s phu thuo c mo a ca c o i t ng sao cho khi mo t o i t ng thay o i tra ng tha i th ta t ca ca c o i t ng phu thuo c no cu ng thay o i theo. Cho phe p thay o i ng x cu a o i t ng tu y theo s thay o i tra ng tha i be n trong cu a no . Bao bo c mo t ho ca c thua t toa n ba ng ca c l p o i t ng e thua t toa n co the thay o i o c la p o i v i chng trnh s du ng thua t toa n. nh ngh a pha n khung cu a mo t thua t toa n, t c la mo t thua t toa n to ng qua t go i e n mo t so phng th c cha c ca i a t trong l p c s ; vie c ca i a t ca c phng th c c u y nhie m cho ca c l p ke th a. Cho phe p nh ngh a the m phe p toa n m i ta c o ng le n ca c pha n t cu a mo t ca u tru c o i t ng ma kho ng ca n thay o i ca c l p nh ngh a ca u tru c o .
Ly mt v d n gin
HINH
TRON
CHUNHAT
TAMGIAC Co cai at cu the cho cac phng thc: Draw(), Area(), Load(), Input()
Cc phng thc thch hp s c gi ty theo kiu ca i tng: HINH *p; p = new CHUNHAT; p->Input(); // phng thc Input ca CHUNHAT s c gi. Cc thao tc tng qut trn kiu HINH khng nn c cc ch th ph thuc cc lp k tha. void ThaoTac(HINH *p) { // ch s dng phng thc chung. If(p->Load()) { p->Input(); p->Draw(); ... } } ==> KHNG NN p kiu p, chng hn thnh TRON, ri gi cc phng thc ring ca lp TRON.
Mau Composite
Tn: Composite, tm dch i tng a hp,
thuc lp mu cu trc i tng.
Mu composite gii quyt vn ny bng cch t chc tch hp d liu qui nh sau:
Cu trc:
Lu tr mch in
Tn: Bridge, tm dch Cu ni, thuc lp mu cu trc i tng. nh:Tch ri ng ngha ca mt vn khi
vic ci t; mc ch c hai b phn (ng ngha v ci t) c th thay i c lp nhau.
Mau Bridge
Window
xWindow
pmWindow
msWindow
Gi s c cn thm lp qun l cc hp hi thoi Dialog - mt dng Window c bit. Nh vy lp Dialog s l c bit ha ca lp Window (k tha t lp Window). K n li l 3 lp hi thoi cho 3 h thng ca s khc nhau k tha t Dialog Window
xWindow
pmWindow
msWindow
Dialog
xDialog
pmDialog
msDialog
Mau Bridge
Mau Bridge
tng ca mu bridge l tch bit hai phm tr:
ngha ca cc ca s (Window, Dialog, ToolBar, ...) s ci t ph thuc cc h iu hnh
Cu trc:
Mu Template method
Tn: Template method, tm dch Phng thc
khun, thuc lp mu v ng x ca lp
Cu trc
Phng thc khun: phn khung ci t cu trc chung ca thut ton
Mu Template method
C s ci t: da vo s a hnh cho cc phng thc c gi bn trong phng thc khun. Xem v d n gin vit bng C++ sau y
void Application::OpenDocument (const char* Chname) rng cc p. thc ny { s c ci t li trong cc if (!CanOpenDocument(name)) lp k tha. Chng hn nh { trong lp MyApplication th // cannot handle this document p.thc DoCreateDocument return; tr v mt i tng kiu } MyDocument. Nh vy, Document* doc = DoCreateDocument(); i tng doc c kiu l if (doc != NULL) MyDocument v lnh gi { doc->DoRead s gi _docs->AddDocument(doc); phng thc DoRead ca AboutToOpenDocument(doc); lp MyDocument. doc->Open(); doc->DoRead(); } }
Bc 1. Chon tuy y v X va khi tao V := { v }; T := Bc 2. Chon y X \ V sao cho co mot canh e nao o cua G noi y vi mot nh x trong V
Bc 3. Gan V := V{y} va T:=T{e} Bc 4. Neu T u n-1 phan t th dng, ngc lai lam tiep tuc bc 2.
class ARC { // Some members... // ... }; class SpanningTree { int n; int nT; // Some other members... // ... void initialize(); void add_Vertex_to_V(int y); void add_Arc_to_T(ARC e); virtual int search_Arc(ARC& e, int& x, int& y); int SpanningTreeAlgorithm();
int SpanningTree::SpanningTreeAlgorithm() { initialize(); while(nT < n-1){ ARC e; int x, y; if(!search_Arc(e, x, y)) return 0; add_Vertex_to_V(y); add_Arc_to_T(e); } return 1; }
};
class PrimSpanningTree: public SpanningTree{ int search_Arc(ARC& e, int& x, int& y) { // to find the minimum arc.. // ... return 1; }; };
Mu Adapter
Mc ch: thay giao tip ca mt lp bi mt giao tip khc ph hp vi yu cu ngi s dng lp, nhm gii quyt bi ton tng thch. Cu trc ca mu Adapter: c 2 dng
Multiple composition Object composition
p_Rubrique 1 CWnd
RhodesTreeWidget ChosirElementCourant( ) AjouterElement( ) SupprimerElement( ) ViderContenu( ) RhodesListBox ChosirElementCourant( ) AjouterElement( ) SupprimerElement( ) ViderContenu( )
RhodesListWidget RhodesListCtrl
RhodesComoBox
Mu Observer
Tn: Observer, tm dch Quan st vin, thuc lp
mu v ng x ca i tng
Cu trc
Mu proxy
Mc ch: Truy xut mt i tng thng qua
mt i tng c y nhim
Mu prototype
Muc ch: Qui nh loai cua cac oi tng can tao bang cach dung mot oi tng mau, tao mi nh vao sao chep oi tng mau nay.
Mu prototype: v d
Mu strategy
Mc ch: bao bc mt h cc thut ton bng
cc lp i tng ng dng c th chn la thut ton khi cn
Mu strategy: v d
Mu state
Mc ch: cho php thay i ng x ca i tng ty theo s thay i trng thi bn trong ca n Mu ny rt ging vi mu strategy v mt hnh thc, tuy nhin khc v ngha
Mu state: v d
Cc tip cn tng t
Cc tip cn dng li theo kiu pattern:
Design patterns [Gam95] GRASP pattern [Lar98] Analysis patterns [Fow97] Process patterns [Amb99]
Cc tip cn tng t
Vic h tr dng li cho qu trnh pht trin phn mm
Frameworks Software components
Design heuristics
Khi nim: Mi heuristic thit k l mt hng dn sc tch v mt phng php lun cho mt vn nh trong thit k phn mm. Ngun gc: T. gi Arthur J. Riel [Rie96] thu thp v h thng ha 61 heuristic lin quan n thit k phn mm hng i tng. M s ca cc heuristic sau y c ly theo ti liu gc ca tc gia
Heuristic 2.5: Khng nn trnh by ci t chi tit ca cc phng thc khc nhau c on m ngun ging nhau trong giao tip Public ca lp
X private Nn chuyn thnh public f1( ), f2( ) f1( ) { ... oan ma Y ... } f2( ) { ... oan ma Y ... }
f( ){ oan ma Y }
Vi heuristic chung
Heuristic 5.4 v 5.5: V mt l thuyt, s
phn cp cc lp k tha cng mn (nhiu tng) cng tt. V mt thc hnh, s tng phn cp khng nn vt qu mt s trung bnh m mt ngi thng thng c th theo di tt cc lp trong cy k tha. Con s trung bnh ny khng nn vt qu 6 tng.
Type
do_this()
Nn chuyn thnh
Type 1 do_this()
Type2 do_this()
... ...