Trong những năm gần đây, phần mềm ứng dụng chạy trên Web ngày càng được sửdụng 
rộng rãi và ưa chuộng xuất phát từtính tiện dụng và rộng khắp của hệthống mạng Internet 
toàn cầu. Phần mềm Web có giao diện đẹp và dễsửdụng, không cần cài đặt và có thể được 
khai thác ởbất cứnơi nào đang có sẵn Internet. Hơn nữa, phần mềm Web – xuất phát từbản 
chất công nghệcủa chúng – đã giải quyết được nhiều vấn đềvềchia sẻvà phân phối tài 
nguyên chung cũng nhưcác vấn đềvềtruy cập và khai thác tài nguyên ởxa. Việc phát triển 
các ứng dụng chạy trên Web ngày càng chiếm tỉlệcao so với phát triển các phần mềm truyền 
thống. Các hợp đồng gia công phần mềm Web ngày càng gia tăng đáng kể. 
Vềmặt công nghệ, nhiều kỹthuật hỗtrợphát triển ứng dụng Web được đềxuất: khởi đầu 
là các trang Web tĩnh HTML, kế đến là các trang Web động DHTML, sau đó là các ngôn ngữ
script như JavaScriptvà VBScriptcho phép lập trình trong các trang HTML, và hiện nay là các 
trang PHP, JSP, ASPhay ASP.NET[14,10,18,23]. Đặc biệt, sựra đời của ngôn ngữ XML 
(Extensible Markup Language[26]) đã tạo một bước ngoặc quan trọng cho kỹthuật biểu diễn 
văn bản phức hợp và đối tượng phân bố. Công nghệ AJAX (Asynchronous JavaScript and XML
[5,13]) cũng được đềxuất: công nghệnày góp phần cải tiến giao diện người dùng trong các 
ứng dụng Web, tạo điều kiện thuận lợi đểngười sửdụng khai thác các ứng dụng Web dễdàng 
hơn. 
Tuy nhiên, sựphát triển đa dạng của những công nghệmới cùng với nhu cầu rất lớn vềsố
lượng các ứng dụng Web làm nảy sinh một sốvấn đềtrong xây dựng phần mềm Web [10]. 
Nguyên do của những vấn đềnày là khi sửdụng một công nghệcụthểvới những hạn chếnhất 
định, các kỹsưphần mềm hay lập trình viên đã không đầu tưthời gian (hoặc là áp lực quá lớn 
của hạn định giao nộp không cho phép họcó thời gian) đểthiết kếtốt kiến trúc ứng dụng, phát 
triển các “chương trình sạch” (clean code) dễbảo trì, có thểtái sửdụng và mởrộng. Các kỹsư
phần mềm thường chọn ngay các giải pháp cứu cánh trước mắt đểkhắc phục hạn chếcông 
nghệmà hướng tới mục tiêu đáp ứng hạn định giao nộp.
                
              
                                            
                                
            
                       
            
                 13 trang
13 trang | 
Chia sẻ: ttlbattu | Lượt xem: 2070 | Lượt tải: 1 
              
            Bạn đang xem nội dung tài liệu Đề tài Áp dụng mẫu thiết kế hướng đối tượng trong phát triển phần Mềm Web, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TAÏP CHÍ PHAÙT TRIEÅN KH&CN, TAÄP 10, SOÁ 11 - 2007 
Trang 5 
ÁP DỤNG MẪU THIẾT KẾ HƯỚNG ĐỐI TƯỢNG TRONG 
PHÁT TRIỂN PHẦN MỀM WEB 
Trần Đan Thư, Huỳnh Thụy Bảo Trân 
Trường Đại Học Khoa Học Tự Nhiên, ĐHQG-HCM 
(Bài nhận ngày 20 tháng 05 năm 2007, hoàn chỉnh sửa chữa ngày 08 tháng 09 năm 2007) 
TÓM TẮT: Các ứng dụng trên môi trường Web ngày càng đóng vai trò quan trọng và 
thay thế dần các phần mềm truyền thống nhằm hỗ trợ tốt hơn các hoạt động đa dạng trong đời 
sống xã hội. Trong những năm gần đây, việc xây dựng và phát triển các ứng dụng Web được 
quan tâm đúng mức bởi giới công nghiệp cũng như các nhà nghiên cứu. Sự phát triển của 
phương pháp luận cũng như công nghệ và kỹ thuật hướng đối tượng đã tạo nhiều điều kiện 
thuận lợi để phát triển phần mềm Web nhờ sử dụng lại các lớp đối tượng xây dựng sẵn. Trong 
bài báo này, chúng tôi trình bày kết quả nghiên cứu về việc vận dụng và phát triển các mẫu 
thiết kế hướng đối tượng trong tiến trình xây dựng và phát triển các phần mềm chạy phân bố 
trên môi trường Web. 
Từ khóa: Kỹ thuật hướng đối tượng, Mẫu thiết kế, Ứng dụng Web, Ứng dụng phân bố. 
1.GIỚI THIỆU 
Trong những năm gần đây, phần mềm ứng dụng chạy trên Web ngày càng được sử dụng 
rộng rãi và ưa chuộng xuất phát từ tính tiện dụng và rộng khắp của hệ thống mạng Internet 
toàn cầu. Phần mềm Web có giao diện đẹp và dễ sử dụng, không cần cài đặt và có thể được 
khai thác ở bất cứ nơi nào đang có sẵn Internet. Hơn nữa, phần mềm Web – xuất phát từ bản 
chất công nghệ của chúng – đã giải quyết được nhiều vấn đề về chia sẻ và phân phối tài 
nguyên chung cũng như các vấn đề về truy cập và khai thác tài nguyên ở xa. Việc phát triển 
các ứng dụng chạy trên Web ngày càng chiếm tỉ lệ cao so với phát triển các phần mềm truyền 
thống. Các hợp đồng gia công phần mềm Web ngày càng gia tăng đáng kể. 
Về mặt công nghệ, nhiều kỹ thuật hỗ trợ phát triển ứng dụng Web được đề xuất: khởi đầu 
là các trang Web tĩnh HTML, kế đến là các trang Web động DHTML, sau đó là các ngôn ngữ 
script như JavaScript và VBScript cho phép lập trình trong các trang HTML, và hiện nay là các 
trang PHP, JSP, ASP hay ASP.NET [14,10,18,23]. Đặc biệt, sự ra đời của ngôn ngữ XML 
(Extensible Markup Language [26]) đã tạo một bước ngoặc quan trọng cho kỹ thuật biểu diễn 
văn bản phức hợp và đối tượng phân bố. Công nghệ AJAX (Asynchronous JavaScript and XML 
[5,13]) cũng được đề xuất: công nghệ này góp phần cải tiến giao diện người dùng trong các 
ứng dụng Web, tạo điều kiện thuận lợi để người sử dụng khai thác các ứng dụng Web dễ dàng 
hơn. 
Tuy nhiên, sự phát triển đa dạng của những công nghệ mới cùng với nhu cầu rất lớn về số 
lượng các ứng dụng Web làm nảy sinh một số vấn đề trong xây dựng phần mềm Web [10]. 
Nguyên do của những vấn đề này là khi sử dụng một công nghệ cụ thể với những hạn chế nhất 
định, các kỹ sư phần mềm hay lập trình viên đã không đầu tư thời gian (hoặc là áp lực quá lớn 
của hạn định giao nộp không cho phép họ có thời gian) để thiết kế tốt kiến trúc ứng dụng, phát 
triển các “chương trình sạch” (clean code) dễ bảo trì, có thể tái sử dụng và mở rộng. Các kỹ sư 
phần mềm thường chọn ngay các giải pháp cứu cánh trước mắt để khắc phục hạn chế công 
nghệ mà hướng tới mục tiêu đáp ứng hạn định giao nộp. Rất nhiều ứng dụng Web rất lớn, đã 
Science & Technology Development, Vol 10, No.11 - 2007 
Trang 6 
được xây dựng và vận hành, đang lâm vào tình trạng rất khó bảo trì và mở rộng. Chúng tôi 
nghiên cứu tổng hợp các vấn đề nảy sinh và đề xuất kỹ thuật để hạn chế, khắc phục những vấn 
đề này với mục đích hỗ trợ cho người phát triển ứng dụng Web. 
Về mặt phương pháp luận, các phương pháp phân tích thiết kế hướng đối tượng [22] đã 
phát triển rất mạnh mẽ và góp phần đáng kể vào việc cải tiến chất lượng của phần mềm nhờ 
vào khả năng xây dựng các lớp đối tượng có tính tái sử dụng cao, dễ bảo trì và mở rộng. Ngôn 
ngữ UML (Unified Modeling Language [17]) được đề xuất để sử dụng như một ngôn ngữ 
chuẩn để mô hình hóa các thành tố phần mềm trong quá trình phân tích thiết kế hướng đối 
tượng. Một số tác giả cũng nghiên cứu vận dụng phương pháp hướng đối tượng, cụ thể hóa các 
phương pháp này để phù hợp với tiến trình xây dựng các ứng dụng Web [3,7,10]. 
Tuy nhiên, các phương pháp hướng đối tượng tập trung chủ yếu vào các hoạt động tổng 
thể trong tiến trình phát triển phần mềm hướng đối tượng. Những phương pháp này thường 
không giải quyết các vấn đề chi tiết nảy sinh trong quá trình thiết kế phần mềm. Để bổ sung 
cho phương pháp hướng đối tượng, các mẫu thiết hướng đối tượng (mẫu thiết kế GoF, Gamma 
và cộng sự [12]) là một tiếp cận độc đáo, được đề xuất để giải quyết các vấn đề nảy sinh trong 
quá trình thiết kế phần mềm hướng đối tượng. Các mẫu GoF có tầm quan trọng và ảnh hưởng 
rất lớn đối với giới nghiên cứu cũng như giới công nghiệp phần mềm. Rất nhiều công trình đặc 
sắc khác về mẫu thiết kế hướng đối tượng được đề xuất để giải nhiều vấn đề đặc thù cho từng 
lĩnh vực ứng dụng phần mềm [2,4,11,21]. Chúng tôi quan tâm đến việc nghiên cứu các mẫu 
thiết kế hướng đối tượng để áp dụng trong quá trình phát triển phần mềm hướng đối tượng, đặc 
biệt là giải quyết các vấn đề về cài đặt giao diện người dùng và các vấn đề liên quan đến các 
ứng dụng phân bố trên Internet [6,24,25]. 
Trong bài báo này, chúng tôi trình bày việc nghiên cứu áp dụng mẫu thiết kế hướng đối 
tượng trong quá trình xây dựng các ứng dụng Web. Xuất phát từ các đặc điểm công nghệ của 
của môi trường Web, các mẫu thiết kế cần phải được vận dụng và phát triển một cách thích 
hợp. Phần 2 của bài báo sẽ phân tích các công nghệ phát triển ứng dụng Web và các vấn đề 
nảy sinh xuất phát từ hạn chế của công nghệ. Trong phần 3, chúng tôi giới thiệu các mẫu thiết 
kế thường được sử dụng cho ứng dụng Web để giải quyết các vấn đề nảy sinh. Kế đến chúng 
tôi sẽ minh họa việc sử dụng mẫu thiết kế trong phần 4. Sau cùng, trong phần 5, chúng tôi tổng 
kết và đề xuất hướng phát triển cho chủ đề nghiên cứu này trong tương lai. 
2.CÔNG NGHỆ WEB VÀ CÁC VẤN ĐỀ NẢY SINH 
Phần này sẽ tóm tắt hiện trạng công nghệ của việc thiết kế và hiện thực các ứng dụng 
Web. Các mô hình công nghệ, ngôn ngữ lập trình và môi trường hỗ trợ được tiến hóa liên tục 
để nâng cao hiệu suất lao động của lập trình viên cũng như cải tiến chất lượng của ứng dụng 
Web được xây dựng. Tuy nhiên, một số vấn đề nhất định đã nảy sinh do sự hạn chế bản chất 
của một số công nghệ cụ thể. Mặc dù có nhiều giải pháp công nghệ đề xuất để giải quyết 
những vấn đề này, nhưng những giải pháp về phương pháp luận luôn đóng vai trò rất quan 
trọng, được vận dụng để bổ sung và hỗ trợ đúng lúc cho các giải pháp công nghệ. 
 2.1.Đặc điểm của công nghệ xây dựng ứng dụng web 
Công nghệ Web được khởi đầu với những trang HTML tĩnh, chỉ nhằm mục đích trình bày 
các thông tin quảng bá của các công ty hay tổ chức nào đó. Những trang này được đặt tại các 
máy chủ Web (Web servers) và cho phép truy cập thông qua Internet. Việc giao tiếp với người 
sử dụng chủ yếu nhờ các liên kết trang: từ một trang Web đi đến trang khác nhờ lựa chọn liên 
kết trang. Do tính tiện dụng và rộng khắp của mạng Internet toàn cầu, những nhà sản xuất phần 
mềm có ý tưởng phát triển các hệ thống phần mềm có thể vận hành trên Internet. Ý tưởng độc 
TAÏP CHÍ PHAÙT TRIEÅN KH&CN, TAÄP 10, SOÁ 11 - 2007 
Trang 7 
đáo này được thực hiện rất thành công với những hệ thống thư tín điện tử trên Web. Sau đó là 
các hệ thống bán hàng, kinh doanh bất động sản, đặt vé tàu, quản lý tài khoản ngân hàng… 
trên Internet. 
Với nhu cầu ngày càng cao của khách hàng, các hãng sản xuất phần mềm nỗ lực nâng cao 
chất lượng của các hệ thống Web nhằm mục đích đạt được các ứng dụng trên Web có thể hoạt 
động như các phần mềm thông thường với nhiều chức năng giao tiếp đa dạng với người sử 
dụng hơn là chỉ gói gọn trong các liên kết trang. Nỗ lực này được khởi đầu với các chương 
trình Perl, Common Gateway Interface (CGI) và C chạy trên các Web server; kế đến là các 
công nghệ phát triển ứng dụng Web, chẳng hạn như: JavaScript, VBScript, PHP, JSP, ASP… 
Hình 1 trình bày kiến trúc tổng thể của ứng dụng Web. Về mặt kỹ thuật, khi người sử dụng 
truy cập đến một địa chỉ WWW thông qua một trình duyệt Web (Web browser) chạy trên máy 
khách (client computer), yêu cầu sẽ được gởi đến máy chủ Web. Đối với trường hợp trang 
Web tĩnh thì yêu cầu được đáp ứng ngay bằng cách gởi ngay trở lại trang HTML cho máy 
khách. Trường hợp trang Web động: máy chủ Web sẽ chạy một chương trình thích hợp để 
thực hiện một số thao tác nhất định nhằm phát sinh ra trang HTML, sau đó trang này được gởi 
đến máy khách. 
W e b b r o w s e r 
( c l i e n t s id e ) 
S e r v e r E n g in e s 
( fo r P H P , J S P , 
A S P … ) 
E x e c u ta b le C o d e , 
S c r ip t P r o g r a m s …
S e r v e r p a g e s 
( P H P , J S P , 
A S P … ) 
D a t a b a s e s 
H T M L 
p a g e s 
S e r v e r s id e 
R
equest R
es
po
ns
e 
Hình 1. Kiến trúc tổng thể của các ứng dụng Web 
Có 2 dạng chính cho chương trình ở máy chủ Web để phát sinh ra trang HTML: chương 
trình script (script program) hay trang server (server page). 
- Chương trình script: như chương trình bình thường được lập trình theo giao thức HTTP 
(Hyper Text Transfer Protocol), sử dụng các lệnh dạng chuỗi để phát sinh ra trang HTML theo 
yêu cầu. Trong thực tế, ngoài các script như CGI Script hay JavaServlet, có thể là một chương 
trình bất kỳ, lập trình giao thức HTTP, được dịch thành mã thực thi và cài đặt tại máy chủ 
Web. 
- Trang server: chương trình được cấu trúc bằng cách nhúng các mã script vào trang 
HTML dự kiến sẽ trả về. Khi có yêu cầu từ máy khách, các đoạn mã script được thực hiện để 
Science & Technology Development, Vol 10, No.11 - 2007 
Trang 8 
phát sinh ra trang HTML thực sự được gởi về trình duyệt Web đang chạy ở máy khách. Ví dụ 
cho dạng này là các công nghệ PHP, ASP, và JSP. 
Hai dạng chương trình nói trên có những lợi thế và hạn chế riêng của mỗi loại. Các 
chương trình script thì thiên về xử lý các yêu cầu và thực hiện các tính toán; người lập trình sẽ 
rất cực nhọc nếu sử dụng dạng chương trình này quá nhiều để thực hiện việc bố trí, định dạng 
kiểu cách trang HTML. Ngược lại, các trang server rất thuận lợi cho việc định dạng trang 
HTML; nhưng nếu người lập trình chèn tùy tiện các mã script vào trang HTML thì sẽ đưa đến 
nhiều vấn đề khó khăn trong việc bảo trì và phát triển hệ thống sau này. 
Đối với các ứng dụng Web có chức năng lưu trữ và quản lý dữ liệu, tùy theo mức độ mà 
chúng ta có thể sử dụng hệ thống tập tin trên máy chủ hay là một cơ sở dữ liệu thực sự. Hệ 
thống dữ liệu được truy xuất và cập nhật thông qua các chương trình script hay là các trang 
server (xem hình 1). Khi dùng hệ thống tập tin của máy chủ, tùy trường hợp người thiết kế có 
thể tổ chức các tập tin cấu trúc. Trong những năm gần đây, tập tin dạng XML thường được 
chọn để lưu trữ dữ liệu có cấu trúc phức hợp. Việc tổ chức cơ sở dữ liệu được thực hiện tùy 
theo qui mô của ứng dụng. Đối với ứng dụng nhỏ: có thể quản lý tập trung bởi một hệ quản trị 
cơ sở dữ liệu. Tuy nhiên, với các ứng dụng Web có qui mô lớn thì dữ liệu có thể được quản lý 
tập trung hay phân tán trên nhiều máy chủ khác nhau. Bên cạnh đó, việc thực hiện truy xuất dữ 
liệu cũng cần được coi trọng. Ví dụ như, nếu các truy vấn SQL được nhúng trực tiếp vào trang 
PHP, thì khi có sự thay đổi về thiết kế cơ sở dữ liệu thì chúng ta phải tìm và sửa lại toàn bộ 
các câu truy vấn đó. 
2.2.Các vấn đề nảy sinh trong quá trình thiết kế và hiện thực ứng dụng Web 
Từ các đặc điểm nêu trên của những công nghệ hỗ trợ xây dựng ứng dụng Web cộng với 
sự thiếu định hướng phương pháp luận trong tiến trình phát triển ứng dụng, nhiều vấn đề đã 
nảy sinh và dẫn đến các ứng dụng cồng kềnh, khó bảo trì, khó mở rộng. Trong phần này, 
chúng tôi sẽ hệ thống lại các vấn đề quan trọng nhất dựa trên những nghiên cứu, quan sát và 
phân tích theo quan điểm phát triển công nghệ phần mềm một cách bền vững [2, 10, 11, 24]. 
• Mã hóa cứng (hard coding) những đoạn mã nguồn chỉ dùng một lần, không thể tái sử 
dụng hay mở rộng để dùng cho các tình huống tương tự nhưng có thay đổi chút ít. Mã hóa 
cứng sẽ gây trở ngại cho việc mở rộng hay nâng cấp hệ thống sau này; 
• Trùng lặp mã nguồn (code duplication): kết quả của việc sao chép vật lý các đoạn 
mã, chỉ sửa lại tên hay giá trị biến. Trường hợp này cũng xảy ra khi lập trình viên sao chép các 
trang HTML (có chèn mã nguồn) để sửa lại theo yêu cầu nào đó. Các hệ thống phần mềm 
trùng lắp mã nguồn rất khó bảo trì và chỉnh sửa; 
• Trộn lẫn mã nguồn nghiệp vụ của ứng dụng với mã nguồn phát sinh trang Web: 
không tách biệt được tính trừu tượng của nghiệp vụ với các chi tiết kỹ thuật liên quan đến công 
nghệ đang dùng để xây dựng ứng dụng. Hệ thống sẽ khó sửa đổi khi có các yêu cầu mở rộng 
về mặt nghiệp vụ của ứng dụng đang phát triển. 
• Nhúng trực tiếp các câu lệnh SQL vào các trang server: cách làm này gắn chặt các 
trang server với mô hình cơ sở dữ liệu của ứng dụng. Một sửa đổi nhỏ trong mô hình dữ liệu 
có khả đưa đến việc sửa rất nhiều trang server của ứng dụng đang phát triển. 
• Chèn trực tiếp các công thức tính toán, biểu thức kiểm tra điều kiện ràng buộc 
dữ liệu vào các trang server: các ràng buộc về nghiệp vụ ứng dụng trộn lẫn với việc trình bày 
trang HTML. Việc thay đổi trong nghiệp vụ ứng dụng có thể dẫn đến sửa đổi nhiều trang Web. 
Về mặt phương pháp luận, người phát triển ứng dụng phải làm cách nào đó để tránh được 
các vấn đề nói trên. Để làm được như vậy họ cần phải được hỗ trợ về kỹ thuật thiết kế ứng 
TAÏP CHÍ PHAÙT TRIEÅN KH&CN, TAÄP 10, SOÁ 11 - 2007 
Trang 9 
dụng, tổ chức các chương trình script, thiết lập các trang server sao cho không gặp phải các 
vấn đề này. 
2.3.Phương pháp hướng đối tượng phát triển ứng dụng Web 
Một số phương pháp hướng đối tượng hỗ trợ tiến trình xây dựng ứng dụng Web [3,7] đã 
được đề xuất. Ngôn ngữ UML được mở rộng (Web Application Extension for UML – WAE) để 
mô hình hóa các thành phần của ứng dụng Web được sản sinh trong quá trình phân tích thiết 
kế. Các hoạt động tham gia vào các pha xây dựng phần mềm trong tiến trình RUP (Rational 
Unified Process) được vận dụng để phát triển ứng dụng Web. Các phương pháp này góp phần 
đáng kể vào việc nâng cao chất lượng của ứng dụng Web, giải quyết một phần nào các vấn đề 
nảy sinh do hiện trạng công nghệ Web. Tuy nhiên, các phương pháp hướng đối tượng cho ứng 
dụng Web chỉ hỗ trợ các bước tổng thể cần phải thực hiện trong tiến trình thiết kế. Các phương 
pháp này không hỗ trợ nhiều cho việc giải quyết các vấn đề cụ thể nảy sinh trong thiết kế và 
hiện thực ứng dụng Web. 
3.VẬN DỤNG MẪU THIẾT KẾ TRONG TIẾN TRÌNH XÂY DỰNG ỨNG DỤNG WEB 
Trong phần này, chúng tôi trình bày kỹ thuật sử dụng mẫu thiết kế hướng đối tượng để giải 
quyết các vấn đề nảy sinh do hiện trạng của các công nghệ xây dựng ứng dụng Web. Trước 
tiên, chúng tôi nhắc lại các mẫu GoF [12] bởi vì đây là những mẫu cơ sở cho phát triển phần 
mềm hướng đối tượng nói chung, hơn nữa có thể sử dụng hiệu quả khi phát triển ứng dụng 
Web. Kế đến chúng tôi trình bày về các mẫu thiết kế tiêu biểu cho ứng dụng Web. Sau cùng 
một số thư viện lớp cho ứng dụng Web được giới thiệu. Những thư viện lớp này được phát 
triển dựa trên nền tảng các mẫu thiết kế. 
3.1.Mẫu thiết kế hướng đối tượng GoF 
Gamma và cộng sự đã đề xuất 23 mẫu thiết kế cơ sở (thường được gọi là mẫu GoF [12]). 
Mỗi mẫu GoF giải quyết một vấn đề cụ thể nào đó trong tiến trình xây dựng phần mềm hướng 
đối tượng. Trong thực tế, một nhóm mẫu GoF thường được sử dụng phối hợp nhau để giải 
quyết các vấn đề thiết kế. Những mẫu này đã được giới công nghiệp sử dụng rất hiệu quả để 
thiết lập các mô hình công nghệ phục vụ cho việc xây dựng các phần mềm. Các kỹ sư phần 
mềm cũng vận dụng thường xuyên các mẫu này trong quá trình thiết kế phần mềm. Đa số mẫu 
thiết kế hiện nay đều có nguồn gốc từ mẫu GoF, có thể là dạng biến thể của một mẫu GoF hay 
là sự phối hợp một cách hợp lý các mẫu GoF để giải quyết các vấn đề trong thiết kế hướng đối 
tượng. 
Bởi vì các chương trình Web được viết bằng ngôn ngữ script, kỹ thuật cài đặt các mẫu 
GoF có thể không hoàn giống như hướng dẫn của Gamma trong tài liệu tham khảo [12]. Trong 
phạm vi bài báo này chúng tôi chỉ tóm tắt lại về ý nghĩa và ứng dụng của những mẫu GoF tiêu 
biểu thường được sử dụng khi xây dựng các ứng dụng Web. 
• Sự phát triển đa dạng của công nghệ Web đưa đến nhiều hệ thống thư viện lớp khác 
nhau phục vụ cho cùng một mục đích, do đó những đoạn mã nguồn sử dụng trực tiếp các lớp 
của một thư viện cụ thể sẽ không thể dùng lại một cách độc lập với thư viện đó. Mẫu Adapter 
dùng để tạo giao diện lập trình không phụ thuộc một thư viện lớp cụ thể. 
• Mẫu State thường được dùng để cài đặt các đối tượng Web có hành vi thay đổi theo 
trạng thái của chúng, hoạt động của đối tượng được điều khiển bằng cách thay đổi trạng thái 
khi thích hợp. 
• Mẫu Brigde được sử dụng để tách biệt tính trừu tượng về mặt nghiệp vụ khỏi các chi 
tiết kỹ thuật cài đặt phụ thuộc công nghệ Web. Nói chung, mẫu này được dùng rất hiệu quả 
Science & Technology Development, Vol 10, No.11 - 2007 
Trang 10 
nhằm tách biệt (không trộn lẫn) 2 phạm trù tương đối độc lập nhau, chẳng hạn: giao diện 
người dùng và xử lý về mặt nghiệp vụ, trình bày dữ liệu và biểu diễn dữ liệu… 
• Mẫu Singleton nhằm cài đặt các lớp chỉ có duy nhất một đối tượng, ngăn ngừa được 
việc tạo đối tượng thứ hai trở đi (nếu có tạo thì chỉ trả về đối tượng đã tạo rồi). Mẫu này 
thường được dùng trong các ứng dụng Web cần thiết cài đặt các lớp một đối tượng bởi vì việc 
tạo nhiều đối tượng không cần thiết sẽ hao tốn bộ nhớ. 
• Các ứng dụng Web thường dùng mẫu Strategy để giải quyết việc lựa chọn các hình 
thức hiển thị khác nhau (nhưng giống cấu trúc) của cùng một trang Web, chẳng hạn như việc 
hỗ trợ nhiều ngôn ngữ và đơn vị tiền tệ cho một trang Web. 
Ngoài các mẫu GoF nói trên, một số mẫu khác như Prototype (đối tượng sao chép; 
cloning), Composite (đối tượng phức hợp), Template method (phương thức khuôn, xử lý tổng 
quát) cũng thường được sử dụng trong xây dựng ứng dụng Web. Tuy nhiên, các mẫu này được 
hỗ trợ đương nhiên bởi các ngôn ngữ lập trình script và các công nghệ Web tiên tiến. 
3.2.Mẫu thiết kế cho ứng dụng web 
Mẫu thiết kế tiêu biểu và đóng vai cho quan trọng nhất trong công nghệ phát triển ứng 
dụng Web là mẫu MVC (Model-View-Controller [10, 11, 19]). Mẫu này có ý tưởng xuất phát 
từ mẫu Observer của Gamma và cộng sự [12]. Thực ra từ cuối những năm 70, trước khi các 
mẫu GoF được công bố, ý tưởng này đã được triển khai thành công cho các thư viện đồ họa 
trên ngôn ngữ lập trình Smalltalk. Tuy nhiên, trong khi mẫu Observer được đề xuất để giải 
quyết việc trình bày dữ liệu cho các ứng dụng truyền thống trên máy đơn, thì mẫu MVC dùng 
để thiết lập kiến trúc của ứng dụng trên Web. 
Mô hình tổng thể của mẫu MVC được trình bày như trong hình 2. Chú ý rằng các mũi tên 
đứt nét có ý nghĩa là “có thể truy xuất” hay là “biết thông tin về”: View và Controller truy xuất 
được lẫn nhau, cùng biết thông tin về Model; tuy nhiên Model không thể truy xuất đến View 
cũng như Controller. Theo mô hình này, mỗi thành phần của ứng dụng Web được tổ chức tách 
biệt thành 3 phần: Model (mô hình bên trong), View (hiển thị bên ngoài), Controller (bộ điều 
khiển nhập xuất và cập nhật phần hiển thị). Nhờ sự tách biệt ba khía cạnh này mà mẫu MVC 
giải quyết được nhiều vấn đề nảy sinh khi phát triển ứng dụng Web. 
View 
Controller 
Model 
Hình 2. Mô hình tổng thể của mẫu MVC [10, 11] 
- Mô hình trong (Model): là đối tượng biểu diễn thông tin nghiệp vụ bên trong ứng dụng 
đang xây dựng. Đối tượng này bao bọc các thành phần dữ liệu và các phương thức liên quan 
đến ứng xử của nó. Khi phát triển các lớp đối tượng này, người lập trình chỉ quan tâm cài đặt 
các xử lý hay tiến trình tác nghiệp của ứ