Tải bản đầy đủ (.pptx) (20 trang)

BÁO CÁO MÔN HỌC THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG đề tài Mẫu thiết kế TEMPLATE METHOD PATTERN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (839.55 KB, 20 trang )

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;ifor(int j=i;jif(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;ifor(int j=i;jif(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;ifor(int j=i;jif(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



×