Mẫu thiết kế Template Method và ứng dụng trong xử lý dữ liệu

Trong công nghệ phần mềm, mẫu thiết kế là một giải pháp tổng thể cho các vấn đề chung

trong thiết kế phần mềm. Ý tưởng sâu xa của các mẫu thiết kế là để tiết kiệm tốt các giải pháp thiết

kế hướng đối tượng và việc tái sử dụng chúng để giải quyết các vấn đề tương tự. Trong bài báo

này chúng tôi sẽ xem xét mẫu thiết kế Template Method do E. Gamma và các cộng sự đã đề xuất,

áp dụng mẫu này để xây dựng và thiết kế một hệ truy xuất tới một cơ sở dữ liệu trên máy chủ, theo

mô hình hệ thống nhiều tầng để thực hiện các công việc xử lý dữ liệu cho các yêu cầu của bài toán

đặt ra trong thực tiễn. Từ đó có một cái nhìn sâu sắc hơn một số mẫu thiết kế có thể thực hiện

trong C#, tìm hiểu các tính năng mới của ngôn ngữ trong thực tế làm cho dễ dàng và hiệu quả hơn

trong thiết kế phần mềm hướng đối tượng.

pdf 8 trang kimcuc 24120
Bạn đang xem tài liệu "Mẫu thiết kế Template Method và ứng dụng trong xử lý dữ liệu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Mẫu thiết kế Template Method và ứng dụng trong xử lý dữ liệu

Mẫu thiết kế Template Method và ứng dụng trong xử lý dữ liệu
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
31 
MẪU THIẾT KẾ TEMPLATE METHOD VÀ ỨNG DỤNG 
TRONG XỬ LÝ DỮ LIỆU 
Nguyễn Mạnh Đức* 
Trường Đại học Sư phạm – ĐH Thái Nguyên 
TÓM TẮT 
Trong công nghệ phần mềm, mẫu thiết kế là một giải pháp tổng thể cho các vấn đề chung 
trong thiết kế phần mềm. Ý tưởng sâu xa của các mẫu thiết kế là để tiết kiệm tốt các giải pháp thiết 
kế hướng đối tượng và việc tái sử dụng chúng để giải quyết các vấn đề tương tự. Trong bài báo 
này chúng tôi sẽ xem xét mẫu thiết kế Template Method do E. Gamma và các cộng sự đã đề xuất, 
áp dụng mẫu này để xây dựng và thiết kế một hệ truy xuất tới một cơ sở dữ liệu trên máy chủ, theo 
mô hình hệ thống nhiều tầng để thực hiện các công việc xử lý dữ liệu cho các yêu cầu của bài toán 
đặt ra trong thực tiễn. Từ đó có một cái nhìn sâu sắc hơn một số mẫu thiết kế có thể thực hiện 
trong C#, tìm hiểu các tính năng mới của ngôn ngữ trong thực tế làm cho dễ dàng và hiệu quả hơn 
trong thiết kế phần mềm hướng đối tượng. 
Từ khóa: Mẫu thiết kế, mẫu Template Method, lớp trừu tượng, giao diện, phương thức trừu 
tượng, phương thức ảo, ghi đè, hệ thống nhiều tầng, ngôn ngữ mô hình hóa thống nhất UML 
GIỚI THIỆU* 
Ngày nay lập trình hướng đối tượng đã 
được sử dụng phổ biến để xây dựng, phát 
triển các hệ thống phần mềm lớn và phức 
tạp. Do tính linh hoạt trong các ngôn ngữ 
hướng đối tượng cho phép chúng ta phân 
chia mã của chúng vào các đối tượng và các 
lớp, làm cho phong cách lập trình này trở nên 
trong sáng và hữu hiệu trong việc giải quyết 
nhiều vấn đề mà các phương pháp lập trình 
trước đây còn nhiều hạn chế. Một mục tiêu 
khác của thiết kế chương trình theo hướng đối 
tượng là để làm cho mã tái sử dụng nhiều 
hơn. Tuy nhiên thực tế đã chứng minh rằng, 
thiết kế phần mềm hướng đối tượng tái sử 
dụng không phải lúc nào cũng dễ dàng. Một 
thiết kế phần mềm tốt, không chỉ giải 
quyết vấn đề đang tồn tại, mà còn liên quan 
đến các vấn đề trong tương lai. Nó sẽ phải 
làm cho chương trình linh hoạt, dễ dàng 
để bảo trì, cập nhật và mở rộng phát 
triển. Các mẫu thiết kế giúp chúng ta 
giải quyết được những vấn đề này. Ý tưởng này 
như sau: Chúng ta sẽ lưu và tham chiếu tới 
các giải pháp đã được thiết kế và sẽ sử dụng lại 
chúng trong các tình huống tương tự. 
Trong công nghệ phần mềm, một mẫu thiết kế 
(design pattern) là một giải pháp tổng thể cho 
*
 Tel: 0915 564249; Email: nmductn@yahoo.com 
các vấn đề chung trong thiết kế phần mềm. 
Một mẫu thiết kế không phải là một thiết kế 
hoàn thiện để mà có thể được chuyển đổi trực 
tiếp thành mã, nó chỉ là một khung sườn mô 
tả cách giải quyết một vấn đề mà có thể được 
dùng lại trong nhiều tình huống khác nhau. 
Các mẫu thiết kế hướng đối tượng thường cho 
thấy mối quan hệ và sự tương tác giữa các lớp 
hay các đối tượng, mà không cần chỉ rõ các 
lớp hay đối tượng của từng ứng dụng cụ thể. 
Các mẫu thiết kế có thể giúp tăng tốc quá 
trình phát triển phần mềm bằng cách cung cấp 
các mẫu hình phát triển đã được chứng thực 
và kiểm chứng. Nó cung cấp các giải pháp 
chung, được viết tài liệu dưới một định dạng 
mà không gắn liền với một vấn đề cụ thể nào. 
Các mẫu thiết kế cho phép các nhà phát triển 
phần mềm giao tiếp với nhau bằng cách dùng 
các tên dễ hiểu được dùng rộng rãi để đặt cho 
các tương tác của phần mềm [1, 5]. 
Trong bài báo này chúng tôi sẽ đề xuất việc 
xây dựng và thiết kế một mô hình hệ thống 
truy xuất cơ sở dữ liệu theo kiến trúc phân 
tầng, dựa trên mẫu thiết kế Template Method 
mà E. Gamma và các cộng sự đã đề xuất, để 
xử lý dữ liệu cho các bài toán liên quan nhiều 
đến việc truy xuất các thông tin với cơ sở dữ 
liệu. Mục đích các công việc của chúng tôi ở 
đây là để có một cái nhìn sâu sắc hơn một 
Nitro PDF Software
100 Portable Document Lane
Wonderland
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
32 
số mẫu thiết kế được có thể được thực hiện 
trong C#, và tìm hiểu xem các tính năng mới 
của ngôn ngữ trong thực tế, làm cho nó dễ 
dàng hơn trong việc thiết kế phần mềm hướng 
đối tượng. 
Sau phần giới thiệu, phần 2 sẽ xem xét mẫu 
thiết kế Template Method do E. Gamma và 
cộng sự đã đề xuất; Phần 3 là một đề xuất mới 
về áp dụng mẫu Template Method để xây 
dựng và thiết kế một hệ truy xuất cơ sở dữ 
liệu theo kiến trúc phân tầng, một số thảo luận 
và nhận xét về các vấn đề được quan tâm; 
Cuối cùng phần 4 sẽ bao gồm một số kết luận 
và công việc tương lai. 
MẪU TEMPLATE METHOD 
Khái niệm: Mẫu thiết kế Template Method 
định nghĩa một bộ khung của một thuật toán 
trong một chức năng, chuyển giao việc thực 
hiện nó cho các lớp con. Mẫu Template 
Method cho phép lớp con định nghĩa lại cách 
thực hiện của một thuật toán, mà không phải 
thay đổi cấu trúc thuật toán. 
Cấu trúc: Cấu trúc của mẫu thiết kế 
Template Method được mô tả bởi lược đồ 
UML như trên hình 1 [1]. 
Trong đó: 
Hình 1. Cấu trúc của mẫu thiết kế Template 
Method [1] 
Abstract Class: 
- Định nghĩa các thao tác nguyên thủy trừu 
tượng, các thao tác này định nghĩa các lớp 
con cụ thể để thực hiện từng bước trong một 
giải thuật. 
- Cài đặt một Template Method xác định 
khung sườn của một giải thuật. Template 
Method này gọi các thao tác nguyên thủy 
cũng như các thao tác được định nghĩa trong 
AbstractClass hoặc một số đối tượng khác. 
Concrete Class: 
Thực thi các thao tác nguyên thủy để thực 
hiện các bước đã chỉ ra trong các lớp con của 
giải thuật. 
Sử dụng: Mẫu Template Method thường 
được sử dụng khi: 
- Cần phải xác định thứ tự của các thuật toán 
và chuyển cho các lớp con thực thi các hành 
vi chung của thuật toán. 
- Tránh sự trùng lặp về mã trình do những 
hành vi chung đã được cài đặt ở lớp cha, các 
lớp con kế thừa và sử dụng những phương 
thức này, chỉ cần cài đặt lại các hành vi riêng 
của chúng. 
Thuận lợi, hạn chế khi sử dụng mẫu 
Template Method 
- Giúp người dùng tái sử dụng những đoạn 
mã chung của các lớp con. 
- Mẫu này thường được sử dụng trong các lớp 
thư viện dùng để gọi các hàm. Đó là những 
hàm có sẵn trong các thư viện cho phép người 
sử dụng kế thừa và có thể cài đặt lại 
(override). 
Cài đặt 
Mã trình khung cơ bản của mẫu Template 
Method có thể được cài đặt trong ngôn ngữ 
C# như sau: 
 abstract class Operations 
 { 
 public abstract void Operation1(); 
 public virtual void Operation2(){ } 
 public void Run() 
 { 
 Operation1(); 
 Operation2(); 
 } 
 } 
class ConcreteA : Operations 
 { 
 public override void Operation1() 
 { 
 Console.WriteLine("ConcreteA: Op1"); 
 } 
 public override void Operation2() 
Nitro PDF Software
100 Portable Document Lane
Wonderland
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
33 
 { 
 Console.WriteLine("ConcreteA: Op2"); 
 } 
 } 
class ConcreteB : Operations 
 { 
 public override void Operation1() 
 { 
 Console.WriteLine("ConcreteB: Op1"); 
 } 
 public override void Operation2() 
 { 
 Console.WriteLine("ConcreteB: Op2"); 
 } 
 } 
class Services 
{ 
 public void TemlateMethod() 
 { 
 Operations o1 = new ConcreteA(); 
 o1.Run(); 
 Operations o2 = new ConcreteB(); 
 o2.Run(); 
 } 
} 
Nhận xét 
Operations là lớp cơ sở trừu tượng, trong nó 
khai báo các phương thức Operation1 và 
Operation2 là trừu tượng hoặc ảo, nội dung 
của chúng có thể được định nghĩa hoặc không 
cần; Các lớp con ConcreteA và ConcreteB kế 
thừa lớp Operations, trong 2 lớp con này sẽ 
cài đặt lại các phương thức của lớp cha 
Operations tùy thuộc vào yêu cầu cụ thể của 
bài toán cần giải quyết; Lớp Services sẽ cung 
cấp các dịch vụ sử dụng các phương thức của 
các lớp Operations, ConcreteA hoặc 
ConcreteB. 
Đọan mã trình trên là một cách cài đặt mẫu 
thiết kế Template Method. Tùy theo ngữ cảnh 
thực tế mà có thể cài đặt mẫu khác trên, như 
có thể dùng lớp trừu tượng hay giao diện 
(interface), các phương thức có thể là ảo hay 
trừu tượng... nhưng phải bảo đảm kiến trúc 
của mẫu. Trong phần sau chúng tôi trình bày 
một đề xuất áp dụng mẫu thiết kế Template 
Method cho việc xử lý dữ liệu với các bài 
toán thực tế. 
ÁP DỤNG MẪU TEMPLATE METHOD 
TRONG XỬ LÝ DỮ LIỆU 
Đặt vấn đề 
Trong phần này chúng ta sẽ tìm hiểu về ứng 
dụng của mẫu Template Method trong việc 
xử lý với một cơ sở dữ liệu đã cho. Bài toán 
được đặt ra như sau: Một hệ thống quản lý 
điểm cho các sinh viên trong một trường đại 
học, cần phải truy cập tới các dữ liệu được 
xây dựng bởi hệ quản trị SQL Serve trong 
một máy chủ (file server) để thực hiện các 
yêu cầu cần phải giải quyết như: Cập nhật các 
thông tin với máy chủ, kết xuất thông tin ra 
cho khách hàng, xử lý tính toán các yêu cầu 
của hệ thống... Vấn đề đặt ra là tổ chức các 
hoạt động của hệ thống sao cho đảm bảo được 
các yêu cầu của hệ thống, thuận tiện cho 
người dùng, dễ dàng cho bảo trì phát triển hệ 
thống... 
Với bài toán đặt ra như trên đã có nhiều giải 
pháp thực hiện trong thực tế. Ở đây chúng tôi 
đề xuất một giải pháp như sau: Sử dụng các 
mẫu thiết kế trong lập trình hướng đối tượng 
để giải quyết, cụ thể là mẫu thiết kế Template 
Method kết hợp với kiến trúc phân tầng hệ 
thống, các công việc xử lý được thực hiện 
bằng ngôn ngữ C# trên nền tảng của công 
nghệ .NET [3, 5]. 
Chúng tôi lựa chọn phương pháp giải quyết 
này với các lý do sau: Dữ liệu của hệ thống đã 
được xây bởi hệ quản trị cơ sở dữ liệu SQL 
Server; Ngôn ngữ C# của hãng Microsoft là 
một một ngôn ngữ lập trình hướng đối tượng 
mạnh, hỗ trợ nhiều cho xử lý dữ liệu trong 
SQL; Công nghệ.NET vẫn đang phát triển 
tốt... [2, 4, 9]. 
Kiến trúc của hệ thống được xây dựng theo mô 
hình phân tầng như trên hình vẽ 2. Trong đó: 
Data Source là nguồn dữ liệu có thể được sử 
dụng để tạo ra cơ sở dữ liệu, như có thể các là 
hệ quản trị cơ sở dữ liệu SQL Server, Oracle, 
DB2, Access... 
Data Access là tầng truy xuất dữ liệu, nó sử 
dụng các đối tượng như hệ quản trị cơ sở dữ 
liệu để làm việc với nguồn dữ liệu Data 
Source. Các lớp trong tầng này thường chứa 
Nitro PDF Software
100 Portable Document Lane
Wonderland
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
34 
những phương thức chung nhất để xử lý kết 
nối với cơ sở dữ liệu, thực thi các câu lệnh 
truy vấn... 
Presentation 
Business Logic 
Data Access 
Data Source 
Hình 2: Mô hình nhiều tầng của hệ thống 
Business Logic là tầng nghiệp vụ logic, tầng 
này có các lớp chứa các phương thức xử lý dữ 
liệu, các đối tượng ở tầng này tương tác với 
các tầng Data Access và Presentation. Tầng 
Business Logic thực hiện các câu lệnh truy 
vấn dữ liệu viết trong các lớp của tầng này, 
hoặc thực thi các thủ tục lưu trữ (Strore 
Procedure), các hàm ở trong tầng nguồn dữ 
liệu Data Source... để thực hiện các yêu cầu 
nghiệp vụ của bài toán. 
Presentation là tầng trình diễn, nó tạo giao 
diện cho người dùng giao tiếp thuận tiện với 
tầng nghiệp vụ, các đối tượng thường được sử 
dụng có thể là các Windows Form, WebForm, 
các hộp thoại dùng chung, các điều khiển như 
Menu, TextBox, Radio Option, Check... 
Như vậy, ta đã có thể hình dung được các 
chức năng chính của từng tầng khi thực hiện 
hệ thống ứng dụng. Phần tiếp theo chúng tôi 
sẽ trình bày cách thức giải quyết bài toán theo 
mẫu thiết kế Template Method theo kiến trúc 
phân tầng của hệ thống đã đề xuất ở trên. 
Áp dụng mẫu thiết kế Template Method 
giải quyết bài toán 
Bài toán đặt ra ở đây chỉ giới hạn trong việc 
cập nhất một số thông tin cho đối tượng sinh 
viên, quá trình đăng ký môn học, cập nhật 
điểm học tập và kết xuất một số thông tin 
minh họa cho việc áp dụng mẫu thiết kế 
Template Method, cho nên biểu đồ UML của 
hệ thống được thiết kế theo mẫu này như trên 
sơ đồ hình vẽ 3. 
Mô hình của bài toán được chúng tôi thiết kế 
trong môi trường tích hợp của C#.Net, trong đó: 
DataQLDL là lớp trừu tượng, chứa các 
trường connect là một trường kiểu string để 
lưu địa chỉ của máy chủ chứa cơ sở dữ liệu 
của hệ thống; dataSet có kiểu DataSet để thao 
tác với các dữ liệu trong SQL; objconnect có 
kiểu SqlConnection để tạo đối tượng kết nối 
hệ thống tới máy chủ [4]. Lớp này có các 
phương thức: CONNECT là phương thức ảo 
có nhiệm vụ thực hiện việc kết nối tới máy 
chủ chứa cơ sở dữ liệu; SELECT là phương 
thức trừu tượng để lựa chọn một bảng dữ liệu 
hay truy vấn trong cơ sở dữ liệu; PROCESS 
là phương thức ảo để thực hiện một thao tác 
xử lý dữ liệu theo yêu cầu, hai phương thức 
SELECT và PROCESS sẽ được cài đặt lại 
trong các lớp kế thừa tùy theo các cầu xử lý 
cụ thể; DISCONNECT là phương thức ảo để 
hủy bỏ kết nối, hủy bỏ đối tượng và giải 
phóng bộ nhớ khi cần thiết; RUN là phương 
thức thực hiện các hàm thành phần trong lớp 
DataQLDL theo mẫu thiết kế Template 
Method. 
Phương thức CONNECT được cài đặt như sau: 
public virtual void CONNECT() 
{ 
 connect = @"Data Source = DATASP; 
Initial Catalog = DB2015; Integrated 
Security = True"; 
 objconnect = new SqlConnection(connect); 
 objconnect.Open(); 
} 
Trong đó DATASP là tên (địa chỉ) của máy 
chủ chứa cơ sở dữ liệu DB2015 được xây 
dựng bằng SQL Server. 
Phương thức DISCONNECT được cài đặt 
như sau: 
public virtual void DISCONNECT() 
Nitro PDF Software
100 Portable Document Lane
Wonderland
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
35 
{ 
 connect = ""; 
 objconnect.Close(); 
 objconnect.Dispose(); 
 objconnect = null; 
} 
Phương thức RUN được cài đặt như sau: 
public void RUN(DataGridView dataview) 
{ 
 CONNECT(); 
 SELECT(); 
 PROCESS(dataview); 
 DISCONNECT(); 
}
Hình 3: Biểu đồ UML của mô hình hệ thống 
Nitro PDF Software
100 Portable Document Lane
Wonderland
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
36 
SINHVIEN là lớp kế thừa của lớp 
DataQLDL, thực hiện việc cài đặt lại (ghi đè) 
các phương thức SELECT và PROCESS của 
lớp cơ sở DataQLDL, để xử lý dữ liệu cho 
các đối tượng cần xử lý như vào-ra dữ liệu 
trong các bảng, cập nhật, hủy bỏ... đối tượng ở 
đây là các sinh viên. Lớp SINHVIEN cũng có 
thể được bổ sung các trường và một số phương 
thức cần thiết để đáp ứng các yêu cầu mới. 
DANGKY_MONHOC là lớp kế thừa của 
lớp DataQLDL, thực hiện việc cài đặt lại các 
phương thức SELECT và PROCESS của lớp 
cơ sở DataQLDL, để xử lý dữ liệu cho các đối 
tượng cần xử lý như vào-ra dữ liệu trong các 
bảng, cập nhật, hủy bỏ... phục vụ cho việc 
đăng ký các môn học của các sinh viên. Lớp 
này cũng có thể được bổ sung các trường và 
một số phương thức cần thiết để đáp ứng các 
công việc. 
CAPNHAT_DIEM là lớp kế thừa của lớp 
DataQLDL, thực hiện việc ghi đè các phương 
thức SELECT và PROCESS của lớp cơ sở 
DataQLDL, để xử lý dữ liệu cho các đối 
tượng cần xử lý như vào-ra dữ liệu trong các 
bảng, cập nhật, hủy bỏ... phục vụ cho việc cập 
nhật điểm thành phần, điểm thi các môn học, 
tính toán xử lý điểm trung bình chung của các 
môn học, xếp loại học tập theo điểm trung 
bình... Lớp CAPNHAT_DIEM cũng có thể 
được bổ sung các trường và một số phương 
thức cần thiết để đáp ứng các yêu cầu xử lý... 
FormSinhVien là lớp kế thừa lớp Form trong 
hệ thống ngôn ngữ C#, lớp này liên kết với 
lớp SINHVIEN, có nhiệm vụ thực hiện các 
dịch vụ cho lớp SINHVIEN, giao tiếp với 
người dùng thông qua các đối tượng điều 
khiển thuận tiện của ngôn ngữ C#. Lớp này 
đóng vai trò như lớp biên giao tiếp giữa người 
dùng và các lớp hệ thống [6]. Một số phương 
thức liên kết với các lớp ở các tầng khác để 
xử lý dữ liệu ở trong lớp này có thể cài đặt 
theo mẫu Template Method như sau: 
private void Load_DataSV() 
{ 
 DataQLDL dataQLDL = new 
SINHVIEN(); 
 dataQLDL.RUN(DataGridView); 
} 
private void btnThemMoi_Click(object 
sender, EventArgs e) 
{ 
 DataQLDL dtq = new SINHVIEN(); 
 dtq.CONNECT(); 
 ... 
 ... 
} 
FormDangKyMonHoc là lớp kế thừa lớp 
Form trong hệ thống ngôn ngữ C#, lớp này 
liên kết với lớp DANGKY_MONHOC, có 
nhiêm vụ thực hiện các dịch vụ cho lớp 
DANGKY_MONHOC, giao tiếp với người 
dùng thông qua các đối tượng điều khiển 
thuận tiện của ngôn ngữ C#. Lớp này đóng 
vai trò như lớp biên giao tiếp giữa người dùng 
và hệ thống. Một số phương thức xử lý trong 
lớp này được cài đặt tương tự như trong lớp 
FormSinhVien. 
FormCapNhatDiem, FormNhapDiemThi, 
FormNhapDiemTPhan là các lớp kế thừa 
lớp Form trong hệ thống ngôn ngữ C#, các 
lớp này liên kết với lớp CAPNHAT_DIEM, 
có nhiêm vụ thực hiện các dịch vụ cho lớp 
CAPNHAT_DIEM, như là nhập điểm thành 
phần, nhập điểm thi, sửa chữa điểm các môn 
học khi cần thiết... Các lớp này giao tiếp với 
người dùng thông qua các đối tượng điều 
khiển của ngôn ngữ C#. Chúng đóng vai trò 
như lớp biên giao tiếp giữa người dùng và hệ 
thống Một số phương thức xử lý trong các 
lớp này được cài đặt tương tự như trong lớp 
FormSinhVien. 
FormMain là lớp kế thừa lớp Form, liên kết 
với các lớp FormSinhVien, 
FormDangKyMonHoc, FormCapNhatDiem, 
FormNhapDiemThi, FormNhapDiemTPhan. 
Đó là lớp chính của hệ thống, nó gọi các lớp 
biên khác để thực hiện các yêu cầu để xử lý 
các công việc theo yêu cầu của người dùng 
thông các thực đơn thuận tiện. 
Trong sơ đồ của hình 3 trên, lớp DataQLDL 
nằm trong tầng Data Access; các lớp 
SINHVIEN, DANGKY_MONHOC và 
CAPNHAT_DIEM thuộc tầng Business 
Nitro PDF Software
100 Portable Document Lane
Wonderland
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
37 
Logic; các lớp FormSinhVien, 
FormDangKyMonHoc, FormCapNhatDiem, 
FormNhapDiemThi, FormNhapDiemTPhan 
và FormMain ở trong tầng Presentation. 
Nhận xét 
Một mẫu thiết kế mô tả một tập hợp của các 
lớp tương tác cung cấp trong khuôn khổ cho 
một giải pháp của một vấn đề tổng quát trong 
một ngữ cảnh hoặc môi trường cụ thể. Nói 
cách khác, một mẫu cho thấy một giải pháp 
cho một vấn đề cụ thể trong phát triển phần 
mềm hướng đối tượng. 
C#.NET mang lại nhiều lợi ích, trong đó có 
thể dễ dàng sử dụng mô hình đối tượng, cơ 
chế thu gom rác tự động làm sạch tài nguyên, 
và các thư viện đến nay được cải thiện bao 
gồm nhiều lĩnh vực khác nhau, từ hỗ trợ giao 
diện đồ họa Windows để truy cập dữ liệu tới 
việc tạo ra các trang web, .NET đảm bảo đủ 
thông tin được bao gồm trong các tập tin thư 
viện biên dịch và các lớp của bạn có thể được 
thừa hưởng và được sử dụng tính năng mà 
.NET cung cấp. Trong [7, 8], chúng tôi đã 
thiết kế và cài đặt một số bài toán theo các 
mẫu thiết kế bằng C#, đã cho thấy những lợi 
ích thiết thực của các mẫu thiết kế. 
Hệ thống ứng dụng mà chúng tôi xây dựng ở 
đây, được thiết kế theo các nguyên lý hướng 
đối tượng dựa tên mẫu Template Method và 
cài đặt bằng ngôn ngữ C#, bước đầu thử 
nghiệm đã cho kết quả đúng theo các yêu cầu. 
Hệ thống có các đặc điểm: 
- Xây dựng theo các kỹ thuật của lập trình 
hướng đối tượng, tuân theo mẫu thiết kế 
Template Method. Bảo đảm các nguyên lý 
thiết kế hướng đối tượng. 
- Kiến trúc của hệ thống theo mô hình phân 
tầng, mỗi tầng thực hiện các chức năng riêng 
biệt, nhưng lại tương tác với nhau một cách 
hài hòa, thể hiện tính rõ ràng khi xây dựng, 
bảo trì, phát triển mở rộng sau này... 
- Có thể nâng cấp dễ dàng qua các phiên bản 
của môi trường phát triển, cũng như tính khoa 
học và hợp lý của mô hình khi xây dựng ứng 
dụng liên quan đến cơ sở dữ liệu nói riêng và 
phần mềm nói chung. 
KẾT LUẬN 
Ngôn ngữ hướng đối tượng mới C# của hãng 
Microsoft có ảnh hưởng nhiều từ các ngôn 
ngữ Java và C++. Tuy nhiên có nhiều tính 
năng mới và hữu hiệu đã được bổ sung để 
đơn giản hóa cho quá trình xây dựng và thiết 
kế các hệ thống hướng đối tượng. 
Hệ thống truy xuất dữ liệu do chúng tôi xây 
dựng và thiết kế ở đây dựa trên cơ sở của mẫu 
thiết kế Template Method trong lập trình 
hướng đối tượng, kết hợp với mô hình kiến 
trúc của hệ thống nhiều tầng. Hệ thống được 
cài đặt bằng ngôn ngữ C#, đã được chạy thử 
nghiệm, bảo đảm đúng các yêu cầu của bài 
toán đặt ra, thuận tiện cho công việc bảo trì và 
mở rộng phát triển. 
Trong tương lai chúng tôi sẽ tiếp tục mở rộng 
và cải tiến hệ thống xử lý cho các bài toán 
khác, kết hợp với các mẫu thiết kế khác, tối 
ưu các lớp và các phương thức trong hệ thống 
để nâng cao tính hiệu quả và các khả năng tái sử 
dụng... Nghiên cứu về việc làm mịn các mẫu 
thiết kế. Áp dụng các mẫu và kết hợp chúng để 
giải quyết các bài toán trong thực tiễn. 
TÀI LIỆU THAM KHẢO 
1. Gamma E., et. Al (2003), Elements of Reusable 
Object-Oriented Software, Addison-Wesley. The 
PDF conversion was made in February 2003. 
2. Jason Price (2004), Mastering C# Database 
Programming, Wiley.com/WileyCDA/... 
3. Judith Bishop (2008), C# 3.0 Design Patterns, 
O’Reilly. 
4. MSDN (2010), C# Language specification, 
Microsoft Corporation. 
5. Sherif M. Yacoub, H.H. Ammar (2003), Pattern 
-Oriented Analysis and Design: Composing Patterns 
to Design Software Systems, Addison Wesley. 
6. Đặng Văn Đức (2002), Phân tích thiết kế hướng 
đối tượng bằng UML, Nhà xuất bản Giáo dục. 
7. Nguyen Manh Duc (2012), “Building some 
design patterns in C#”, Journal of science and 
technology, Thainguyen University, volume 90 
(02), p. 77-86. 
8. Nguyễn Mạnh Đức (2014), “Ứng dụng mẫu 
thiết kế xây dựng mô hình giải một số bài toán hồi 
quy”, Tạp chí Khoa học và Công nghệ, Đại học 
Thái Nguyên, tập 122, số 08, tr. 129-135. 
9. Nguyễn Văn Lân, Phương Lan (2009), Lập 
trình cơ sở dữ liệu với C#-Mô hình nhiều tầng, 
Nhà xuất bản Lao động xã hội. 
Nitro PDF Software
100 Portable Document Lane
Wonderland
Nguyễn Mạnh Đức Tạp chí KHOA HỌC & CÔNG NGHỆ 135(05): 31 - 38 
38 
SUMMARY 
TEMPLATE MMETHOD DESIGN PATTERN 
AND APPLICATIONS IN DATA PROCESSING 
Nguyen Manh Duc
*
College of Education - TNU 
In software engineering, the design is a total solutions for common problems in software design. 
Profound idea of the design patterns is good to save the solution of object-oriented design and re-
use them to solve the same problems. In this paper we will consider the Template Method design 
pattern by E. Gamma et al have proposed applying this model to build and design an system access 
to a database on a server, the model of multi-tier system to perform data processing tasks in 
accordance with the requirements of the problem posed in practice. From there take a deeper look 
at some of the designs can be done in C #, learn the new features of the language in fact make it 
easier and more efficient software design object- oriented. 
Keywords: Design pattern, Template Method pattern, abstract class, interface, abstract method, 
virtual method, override, multi-tiered system, Unified Modeling Language 
Ngày nhận bài:15/01/2015; Ngày phản biện:22/01/2015; Ngày duyệt đăng: 31/5/2015 
Phản biện khoa học: TS. Vũ Vinh Quang – Trường Đại học Công nghệ Thông tin & Truyền thông - ĐHTN
*
 Tel: 0915 564249; Email: nmductn@yahoo.com 
Nitro PDF Software
100 Portable Document Lane
Wonderland

File đính kèm:

  • pdfmau_thiet_ke_template_method_va_ung_dung_trong_xu_ly_du_lieu.pdf