L/O/G/O
Trường Đại Học Sư Phạm Kỹ Thuật TP HCM
Khoa Công Nghệ Thơng Tin
BÁO CÁO MƠN HỌC
THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG
Mẫu thiết kế
Template Method
01/21
Nội dung
www.themegallery.com
1
Dẫn nhập
2
Định nghĩa
3
Cấu trúc, ý nghĩa và vai trò
4
Hệ quả
5
Vận dụng
6
Các mẫu liên quan
7
Ví dụ
8
Tài liệu tham khảo
03/21
1. Dẫn nhập
Ví dụ 1:
Để thực hiện một câu truy vấn trong các hệ
quản trị, ta cần làm gì?
www.themegallery.com
12/05/2015
04/21
1. Dẫn nhập (tt)
Thực hiện :
Kết nối tới cơ sở dữ liệu.
Thực hiện truy vấn.
Ngắt kết nối tới cơ sở dữ liệu.
www.themegallery.com
12/05/2015
05/21
1. Dẫn nhập (tt)
Ví dụ 2:
Cho các yêu cầu sau:
Sắp xếp mảng số nguyên n phần tử theo
thứ tự tăng dần.
Sắp xếp mảng số nguyên n phần tử theo
thứ tự giảm dần.
Cài đặt các class sort giải quyết các yêu cầu:
www.themegallery.com
12/05/2015
06/21
1. Dẫn nhập (tt)
class SortUp {
public:
void sort(int A[],int n){
for(int i=0;i
for(int j=i;j
if(A[i]>A[j])
Swap(A[i],A[j]);
}
private:
void Swap(int &a,int &b) {
int t=a;
a=b;
b=t;
}
};
www.themegallery.com
12/05/2015
class SortDown {
public :
void sort(int A[],int n) {
for(int i=0;i
for(int j=i;j
if(A[i]
Swap(A[i],A[j]);
}
private:
void Swap(int &a,int &b) {
int t=a;
a=b;
b=t;
}
};
07/21
1. Dẫn nhập (tt)
Ta nhận thấy rằng hai hàm sortUp và sortDown có
cấu trúc tương tự nhau và chỉ khác nhau ở điều kiện
so sánh.
Ý tưởng như sau:
Tổ chức điều kiện so sánh thành hàm isSwap, tạo lớp
AbstractSort cơ sở có cấu trúc chung cho sortUp và
sortDown, sau đó cho sortUp và sortDown kế thừa
lớp sort và định nghĩa lại hàm isSwap(int,int).
www.themegallery.com
12/05/2015
08/21
1. Dẫn nhập (tt)
class AbstractSort {
public:
void sort(int A[],int n) {
for(int i=0;i
for(int j=i;j
if(isSwap(A[i],A[j])
Swap(A[i],A[j]);
}
private:
virtual bool isSwap(int , int )=0;
void Swap(int &a,int &b) {
int t=a;
a=b;
b=t;
}
};
www.themegallery.com
12/05/2015
class SortUp: public AbtractSort {
bool isSwap(int a,int b) {
return(a>b);
}
};
class SortDown: public AbtractSort {
bool isSwap(int a,int b){
return(a
}
};
09/21
2. Định nghĩa
Mẫu Template Method là một mẫu thiết kế thuộc
nhóm Behavioral Pattern.
Mẫu Template Method tạo ra bộ khung của một
thuật toán, ủy thác việc cài đặt một vài bước trong
thuật tốn đó cho các lớp con. Các lớp con định
nghĩa lại các bước này để phù hợp với yêu cầu cụ
thể mà không cần thay đổi cấu trúc của thuật toán.
www.themegallery.com
12/05/2015
10/21
3. Cấu trúc- Ý nghĩa- Vai trị
Phương thức khn:
phần khung để cài đặt
cấu trúc chung của
thuật toán.
Phần thay đổi
theo ngữ cảnh,
việc cài đặt được
ủy nhiệm cho các
lớp kế thừa.
Trong cài đặt cấu trúc
khung của thuật toán
sẽ gọi đến các
phương thức được cài
đặt.
Chú ý là phải không cài đặt lại phương
thức khuôn “TemplateMethod” trong lớp
kế thừa.
www.themegallery.com
12/05/2015
11/21
3. Cấu trúc- Ý nghĩa- Vai trò (tt)
Vai trò:
Mẫu Template Method cho phép các thuật toán bảo
lưu một số bước cho lớp con. Cấu trúc của thuật tốn
khơng thay đổi, nhưng các bộ phận nhỏ được xác định
hoạt động của nó được xử lý ở nơi khác.
www.themegallery.com
12/05/2015
12/21
4. Hệ quả
• Ưu điểm:
- Có khả năng tái sử dụng code, tránh sự trùng lặp
code trong các class.
- Có cấu trúc điều khiển ngược (Inverted Control
Structure).
- Lợi dụng tính đa hình của lớp cha để gọi các lớp
con, các lớp con sẽ thừa kế những thuộc tính đã có
của lớp cha mà không phải cài đặt lại.
www.themegallery.com
12/05/2015
13/21
4. Hệ quả (tt)
• Nhược điểm:
- Khả năng giao tiếp kém.
- Khó khăn trong việc thiết lập các chức năng.
- Khó khăn để hiểu được chương trình.
- Khó khăn trong việc duy trì.
www.themegallery.com
12/05/2015
14/21
5. Vận dụng
Cài đặt các phần cố định của một thuật tốn và để
lại các phương thức có thể thay đổi theo yêu cầu do
các lớp con cài đặt.
Tránh sự trùng lặp mã nguồn: các đoạn mã chung
trong các lớp con có thể được tách ra và đưa vào
trong phần cài đặt của lớp cơ sở.
Điều khiển mở rộng các lớp con. Ta có thể định
nghĩa một Template Method, nó gọi các thao tác
‘‘hook’’ tại các điểm đặc biệt, bằng cách đó cho
phép các mở rộng chỉ tại điểm đó.
www.themegallery.com
12/05/2015
15/21
6. Các mẫu liên quan
www.themegallery.com
12/05/2015
16/21
6. Các mẫu liên quan(tt)
Các Factory Method thường được gọi bởi Template Method.
www.themegallery.com
12/05/2015
17/21
6. Các mẫu liên quan(tt)
Strategy: Template sử dụng thừa kế để thay đổi một phần của thuật
toán. Strategy sử dụng ủy nhiệm để thay đổi Hồn tồn thuật tốn.
www.themegallery.com
12/05/2015
18/21
7. Ví dụ
class TemplateMethod
HouseTemplate
#
#
#
#
#
#
+
buildDoor(): void
buildFoundation(): void
buildHouse(): void
buildPillars(): void
buildWall(): void
buildWindows(): void
HouseTemplateMethod()
GlassHouse
WoodenHouse
#
#
#
www.themegallery.com
12/05/2015
buildDoor(): void
buildPillars(): void
buildWall(): void
#
#
#
buildDoor(): void
buildPillars(): void
buildWall(): void
19/21
8. Tài liệu tham khảo
[1] Erich Gamma, Richard Helm, Ralph Johnson, John
Vlissides Addison-Wesley Pub Co; Design Patterns
Elements of Reusable Object-Oriented Software; 1st edition
(January 15, 1995).
[2] Địa chỉ web:
/>rn
[3] Địa chỉ web: />
www.themegallery.com
12/05/2015
20/21
L/O/G/O
Thank You!
12/05/2015
21/21