You are on page 1of 17

Mẫu Template Method

Nhóm số 8
Nguyễn Tuấn Khôi – 20521480
Đào Tấn Hào - 20521289
Vũ Khánh Hoàng - 20521352
Nguyễn Bá Khanh - 20521450
Nội dung
1. Tổng quan
❑ Tên
❑ Mô tả ngắn về mẫu
❑ Phân loại

2. Ngữ cảnh/trường hợp sử dụng


3. Cấu trúc mẫu và mô tả + ví dụ minh họa
4. Các bước hiện thực mẫu + code minh họa cho ví dụ trên
5. Ưu điểm
6. Nhược điểm
7. Liên quan đến các mẫu khác
1. Tổng quan
❏ Tên: Mẫu Template Method
❏ Mô tả: Định nghĩa phần khung của một thuật toán, tức là
một thuật toán tổng quát gọi đến một số phương thức
chưa được cài đặt trong cơ sở; việc cài đặt các phương
thức được ủy nhiệm cho các lớp kế thừa.
❏ Phân loại: Behavioral patterns
2. Ngữ cảnh sử dụng
❏ Khi có một thuật toán với nhiều bước và mong muốn cho
phép tùy chỉnh chúng trong lớp con.
❏ Mong muốn chỉ có một triển khai phương thức trừu
tượng duy nhất của một thuật toán.
❏ Mong muốn hành vi chung giữa các lớp con nên được
đặt ở một lớp chung.
❏ Các lớp cha có thể gọi các hành vi trong các lớp con của
chúng một cách thống nhất (step by step).
3. Cấu trúc - Ví dụ
I. Cấu trúc
3. Cấu trúc - Ví dụ
II. Mô tả
1. AbstractClass khai báo các phương thức hoạt động như các
bước của một thuật toán, cũng như template method thực tế
gọi các phương thức này theo một thứ tự cụ thể. Các bước có
thể được khai báo là trừu tượng hoặc có một số triển khai
mặc định.
3. Cấu trúc - Ví dụ
II. Mô tả
2. Các lớp Concrete có thể ghi đè tất cả các bước, nhưng không
phải chính template method.

.
3. Cấu trúc - Ví dụ
4. Các bước hiện thực mẫu - Ví dụ
I. Các bước thực hiện
1. Xác định một lớp trừu tượng (abstract class) hoặc giao diện
(interface) chứa phương thức template. Phương thức này
chứa các bước cơ bản của thuật toán, nhưng các bước này
chưa được cài đặt cụ thể.
2. Xác định các phương thức concretize (cụ thể hóa) mà các lớp
con có thể triển khai để cung cấp bước cụ thể của thuật toán.
Các phương thức này sẽ được gọi trong phương thức
template.
4. Các bước hiện thực mẫu - Ví dụ
I. Các bước thực hiện
3. Xác định phương thức template trong lớp trừu tượng
(abstract class) hoặc giao diện (interface). Phương thức này
chứa các bước chung của thuật toán và gọi các phương thức
concretize cụ thể được triển khai trong các lớp con.
4. Tạo các lớp con cụ thể kế thừa từ lớp trừu tượng (abstract
class) hoặc triển khai giao diện (interface) và cài đặt các
phương thức concretize. Các phương thức concretize sẽ cung
cấp bước cụ thể của thuật toán.
4. Các bước hiện thực mẫu - Ví dụ
I. Các bước thực hiện
5. Trong ứng dụng, tạo một đối tượng từ một lớp con cụ thể và
gọi phương thức template trên đối tượng đó. Quá trình thực
hiện thuật toán sẽ được tự động đi qua các bước chung và các
bước cụ thể do lớp con triển khai.
4. Các bước hiện thực mẫu - Ví dụ
II. Ví dụ
4. Các bước hiện thực mẫu - Ví dụ
II. Ví dụ
4. Các bước hiện thực mẫu - Ví dụ
II. Ví dụ
5. Ưu điểm
• Tái sử dụng code (reuse), tránh trùng lặp code (duplicate):
đưa những phần trùng lặp vào lớp cha (abstract class).
• Cho phép người dùng override chỉ một số phần nhất định của
thuật toán lớn, làm cho chúng ít bị ảnh hưởng hơn bởi những
thay đổi xảy ra với các phần khác của thuật toán.
6. Nhược điểm
• Template method có càng nhiều bước để override càng khó
bảo trì.
6. Liên quan đến các mẫu khác
• Factory Method: là một chuyên môn hoá của Template
Method, có thể đóng vai trò như một bước trong Template
method.
• Template Method dựa trên kế thừa: nó cho phép bạn thay đổi
một phần thuật toán bằng cách mở rộng chúng trong
subclass. Strategy dựa trên thành phần: bạn có thể thay đổi
một phần của hành vi của object bằng cách cung cấp các
chiến thuật khác nhau để phản hồi cho hành vi đó. Template
Method làm việc ở lớp, nên nó “static”. Strategy làm việc ở
đối tượng, cho phép thay đổi hành vi ngay trong runtime

You might also like