1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

20 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mẫu thiết kế Template Method Pattern
Người hướng dẫn PTS. Nguyễn Văn A
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành phố Hồ Chí Minh
Chuyên ngành Khoa Công Nghệ Thông Tin
Thể loại Báo cáo môn học
Năm xuất bản 2021
Thành phố TP HCM
Định dạng
Số trang 20
Dung lượng 1,74 MB
File đính kèm file dự án.zip (2 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 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 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

Trang 1

Mẫu thiết kế

Template Method

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

Trang 2

Nội dung

1

Định nghĩa 2

Cấu trúc, ý nghĩa và vai trò 3

Hệ quả 4

Vận dụng 5

Các mẫu liên quan 6

Ví dụ 7

Tài liệu tham khảo 8

Dẫn nhập

Trang 3

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ì?

Trang 4

1 Dẫn nhập (tt)

Thực hiện :

Trang 5

1 Dẫn nhập (tt)

Ví dụ 2:

Cho các yêu cầu sau:

thứ tự tăng dần.

thứ tự giảm dần.

Cài đặt các class sort giải quyết các yêu cầu:

Trang 6

1 Dẫn nhập (tt)

class SortUp {

public:

void sort(int A[],int n){

for(int i=0;i<n;i++)

for(int j=i;j<n;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;

}

};

class SortDown { public :

void sort(int A[],int n) { for(int i=0;i<n;i++)

for(int j=i;j<n;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;

} };

Trang 7

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).

Trang 8

1 Dẫn nhập (tt)

class AbstractSort {

public:

void sort(int A[],int n) {

for(int i=0;i<n;i++)

for(int j=i;j<n;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;

}

};

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<b);

} };

Trang 9

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 toá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

Trang 10

3 Cấu trúc- Ý nghĩa- Vai trò

Phương thức khuôn:

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.

Trang 11

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 toá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

Trang 12

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

Trang 13

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ì

Trang 14

5 Vận dụng

 Cài đặt các phần cố định của một thuật toá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 đó

Trang 15

6 Các mẫu liên quan

Trang 16

6 Các mẫu liên quan(tt)

 Các Factory Method thường được gọi bởi Template Method

Trang 17

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 Hoàn toàn thuật toán

Trang 18

7 Ví dụ

class TemplateMethod

HouseTemplate

# buildDoor(): void

# buildFoundation(): void

# buildHouse(): void

# buildPillars(): void

# buildWall(): void

# buildWindows(): void + HouseTemplateMethod()

WoodenHouse

# buildDoor(): void

# buildPillars(): void

# buildWall(): void

GlassHouse

# buildDoor(): void

# buildPillars(): void

# buildWall(): void

Trang 19

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:

http://www.dofactory.com/net/template-method-design-patte

rn

[3] Địa chỉ web:

http://www.oodesign.com/template-method-pattern.html

Trang 20

Thank You!

Ngày đăng: 04/09/2023, 13:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w