Design pattern
Môc lôc
Li nói đầu .......................................................................................................... 3
A. Tng quan v Design pattern ............................................................... 4
I. Vn đề trong thiết kế phn mm hướng đối tượng..................................... 4
II. Lch s design pattern .............................................................................. 4
III. Design pattern là gì?................................................................................ 5
B. H thng các mu design pattern ................................................. 6
I. H thng các mu ...................................................................................... 6
1. NhómCreational ............................................................................................ 6
2. Nhóm Structural ............................................................................................ 6
3. Nhóm Behavioral........................................................................................... 6
4. Sưu liu chun ca mu................................................................................. 6
5. Quy tc biu din mu trong UML................................................................ 7
II.Ni dung các 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. Façade.........................................................................................................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ế phân tích thiết kế
phn mm hướng đối tượng .............................................................50
I. Framework và idom................................................................................50
II. Kiến trúc Add – Ins ................................................................................51
D.Các mu thiết kế hin đại..............................................................52
I. Gamma Patterns.....................................................................................52
II. Entity Pattern (datasim).........................................................................52
III. Concurrent Patterns...............................................................................52
E. Xây dng ng dng Chess s dng Design pattern......................53
F. Tài liu tham kho ........................................................................53
I. Sách........................................................................................................53
II. Địa ch website ......................................................................................53
2
Li nói đầu
Design pattern là mt k thut dành cho lp trình hướng đối tượng. Nó cung cp
cho ta cách tư duy trong tng tình hung ca vic lp trình hướng đối tượng, và phân
tích thiết kế h thng phn mm.Nó cn thiết cho c các nhà lp trình và nhà phân tích
thiết kế. Đối vi nhng người chuyên v lp trình thì vic nm vng công c lp trình
thôi chưa đủ,h cn phi có mt tư duy, mt k năng gii quyết các tình hung nh ca
công vic xây dng phn mm mà h là người thi hành.Vic gii quyết này phi đảm
bo tính n định là h có th gii quyết được trong mi tình hung, vi thi gian đúng
tiến độ, phương pháp gii quyết hp lý và đặc bit là phi theo mt chun nht
định.Nhng nhà phân tích thiết kế mc cao, vic nm vng công c lp trình có th
không cn thiết, nhưng h cũng cn phi biết được nhng khâu nh nht chi tiết nht
ca thiết kế ca h đưa ra có th thc hin được hay không và nếu thc hin được thì có
th thc hin như thế nào, và s theo mt chun ra sao.
Design pattern được dùng khp mi nơi, trong các phn mm hướng đối tượng
các h thng ln. Trong các chương trình trò chơi, ... Và c trong các h thng tính toán
song song,..
Design pattern th hin tính kinh nghim ca công vic lp trình, xây dng và
thiết kế phn mm.Có th chúng ta đã gp design pattern đâu đó, trong các ng dng,
cũng có th chúng ta đã tng s dng nhng mu tương t như design pattern để gii
quyết nhng tình hung ca mình, nhưng chúng ta không có mt khái nim gì v
c.Trong ni dung đồ án môn hc này chúng tôi xin trình bày nhng hiu biết ca mình
v design pattern theo hướng tiếp cn mang tính kinh nghim. Vic cài dt các mu
được trình bày trên mt tài liu đi kèm.
Chúng em xin cm ơn s hướng dn ca thy Nguyn Ngc Bình, đã giúp đỡ
chúng em hoàn thành đồ án môn hc này.
3
A.Tng quan v Design pattern.
I.Vn đề trong thiết kế phn mm hướng đối tượng
Người ta nói rng, vic thiết kế mt phn mm hướng đối tượng là mt công
vic khó, và vic thiết kế mt mt phn mm hướng đối tượng phc v cho mc đích
dùng li còn khó hơn. Chúng ta phi tìm ra nhng đối tượng phù hp,đại din cho mt
lp các đối tượng. Sau đó thiết kế giao din và cây kế tha cho chúng, thiết lp mi
quan h gia chúng.Thiết kế ca chúng ta phi đảm bo là gii quyết được các vn đề
hin ti, có th tiến hành m rng trong tương lai mà tránh phi thiết kế li phn mm.
Và mt tiêu trí quan trng là phi nh gn. Vic thiết kế mt phn mm hướng đối
tượng phc v cho mc đích dùng li là mt công vic khó, phc tp vì vy chúng ta
không th mong ch thiết kế ca mình sđúng, và đảm bo các tiêu trí trên ngay
được. Thc tế là nó cn phi được th nghim sau vài ln và sau đó nó s đưc sa
cha li. Đứng trước mt vn đề, mt người phân tích thiết kế tt có th đưa ra nhiu
phương án gii quyết, anh ta phi duyt qua tt c các phương án và ri chn ra cho
mình mt phương án tt nht.Phương án tt nht này s được anh ta dùng đi dùng li
nhiu ln, và dùng mi khi gp vn đề tương t. Mà trong phân tích thiết kế phn mm
hướng đối tượng ta luôn gp li nhng vn đề tương t như nhau.
II. Lch s design pattern
Ý tưởng dùng mu xut phát t ngành kiến trúc, Alexander,
Ishikawa,Silverstein,Jacobson,Fiksdahl-King và Angel (1977) ln đầu tiên đưa ra ý
tưởng dùng các mu chun trong thiết kếy dng và truyn thông. H đã xác định và
lp sưu liu các mu có liên quan để có th dùng để gii quyết các vn đề thường xy ra
trong thiết kế các cao c. Mi mu này là mt cách thiết kế, chúng đã được phát trin
hàng trăm năm như là các gii pháp cho các vn đề mà người ta làm trong lĩnh vc xây
dng thường gp. Các gii pháp tt nht có được ngày hôm nay là qua mt quá trình
sàng lc t nhiên. Mc dù nghành công ngh phn mm không có lch s phát trin lâu
dài như nghành kiến trúc, xây dng nhưng Công ngh phn mm là mt nghành công
nghip tiên tiến, tiếp thu tt c nhng gì tt đẹp nht t các nghành khác. Mu được
xem là gii pháp tt để gii quyết vn đềy dng h thng phn mm.
Sut nhng năm đầu 1990,thiết kế mu được tho lun các hi tho workshop,
sau đó người ta n lc để đưa ra danh sách các mu và lp sưu liu v chúng. Nhng
người tham gia b dn vào vic cn thiết phi cung cp mt s kiu cu trúc mt mc
quan nim cao hơn đối tượng và lp để cu trúc này có th được dùng để t chc các
lp. Đây là kết qu ca s nhn thc đựơc rng vic dùng các k thut hướng đối tượng
độc lp s không mang li nhng ci tiến đáng k đối vi cht lượng cũng như hiu qu
ca công vic phát trin phn mm. Mu được xem là cách t chc vic phát trin
hướng đối tượng, cách đóng gói các kinh nghim ca nhng ngưòi đi trước và rt hiu
qu trong thc hành.
Năm 1994 ti hi ngh PLoP( Pattern Language of Programming Design) đã
được t chc. Cũng trong năm này quyn sách Design patterns : Elements of Reusable
Object Oriented Software (Gamma, Johnson,Helm và Vhissdes,1995) đã được xut bn
đúng vào thi đim din ra hi ngh OOPSLA’94. Đây là mt tài liu còn phôi thai
trong vic làm ni bt nh hưởng ca mu đối vi vic phát trin phn mm, s đóng
4
góp ca nó là xây dng các mu thành các danh mc (catalogue) vi định dng chun
được dùng làm tài liu cho mi mu và ni tiếng vi tên Gang of Four (b t), và các
mu nó thường được gi là các mu Gang of Four. Còn rt nhiu các cun sách khác
xut hin trong 2 năm sau, và các định dng chun khác được đưa ra.
Năm 2000 Evitts có tng kết v cách các mu xâm nhp vào thế gii phn mm
(sách ca ông lúc by gi ch nói v nhng mu có th được s dng trong UML ch
chưa đưa ra khái nim nhng mu thiết kế mt cách tng quát). Ông công nhn Kent
Beck và Ward Cunningham là nhng người phát trin nhng mu đầu tiên vi
SmallTalk trong công vic ca h được báo cáo ti hi ngh OOPSLA’87. Có 5 mu mà
Kent Beck và Ward Cunningham đã tìm ra trong vic kết hp các người dùng ca mt
h thng mà h đang thiết kế. Năm mu này đều được áp dng để thiết kế giao din
người dùng trong môi trường Windows.
III.Design pattern là gì ?
Design patterns là tp các gii pháp cho cho vn đề ph biến trong thiết kế các
h thng máy tính. Đây là tp các gii pháp đã được công nhn là tài liu có giá tr,
nhng người phát trin có th áp dng gii pháp này để gii quyết các vn đề tương t.
Ging như vi các yêu cu ca thiết kế và phân tích hướng đối tượng (nhm đạt được
kh năng s dng các thành phn và thư vin lp), vic s dng các mu cũng cn phi
đạt được kh năng tái s dng các gii pháp chun đối vi vn đề thường xuyên xy ra.
Christopher Alexander nói rng :” Mi mt mu mô t mt vn đề xy ra lp đi
lp li trong môi trường và mô t cái ct lõi ca gii pháp để cho vn đề đó.Bng cách
nào đó bn đã dùng nó c triu ln mà không làm ging nhau 2 ln”.
5