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

thiết kế phần mềm hướng đối tượng hướng TEMPLATE METHOD STRATEGY

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 (425.76 KB, 34 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN

THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG
TEMPLATE METHOD & STRATEGY


STRATEGY PATTERN


• Demo
• Các mẫu liên quan
• Ưu, nhược điểm
• Tính chất
• Một số ví dụ
• Những trường hợp áp dụng
• Cấu trúc


9
8
7
6
5
4
3
2
1

NỘI DUNG



1. Định nghĩa



Strategy là mẫu chiến lược xác định một nhóm thuật toán, đóng gói từng thuật
toán và làm cho chúng có thể thay đổi




Strategy cho phép thuật toán thay đổi một cách độc lập với các client sử dụng nó
Cung cấp một nhóm thuật toán cho phép client chọn lựa linh động một thuật toán
cụ thể khi sử dụng.


2. Mục đích

• Giảm độ phức tạp của mã nguồn.
• Tránh sự rắc rối khi phải hiện thực một chức năng nào đó qua quá nhiều
lớp con.

• Dễ tu sửa, bảo dưỡng mà không ảnh hưởng trực tiếp đến client.
• Dễ dàng thay đổi thuật toán.
• Các thuật toán khác nhau sẽ phù hợp với các thời điểm khác nhau.


3. Cấu trúc
Strategy: Mô tả một giao diện
chung cho tất cả các thuật toán

được hỗ trợ.

Context: Sử dụng giao diện này
để gọi thuật toán được định
nghĩa bởi ConcreteStrategy

Triển khai các thuật toán sử dụng
giao diện Strategy


4. Những trường hợp áp dụng

một đoạn code dễ thay đổi và muốn tách chúng ra khỏi chương trình
• Khi
chính để dễ dàng bảo trì và thay đổi.
thay đổi thuật toán sử dụng khi chương trình đang chạy mà không
• Muốn
ảnh hưởng đến chương trình


5. Một số ví dụ

Ví dụ 1:Chúng ta đang ở KTX D2 cần đi chuyển đến trường và có 3 cách để đi đó là đi bộ
hoặc đi xe buýt hoặc là đi Grab và vấn đề đặt ra là cần chọn một trong 3 cách trên đến
trường sao cho hợp lý và nhanh nhất.


5. Một số ví dụ



5. Một số ví dụ

-strategy


5. Một số ví dụ
Ví dụ2: Sắp xếp dãy số cho trước.


6. Tính chất

• Một thuật toán trong nhóm thuật toán có thể thực thi chung với một giao
diện.

• Tạo ra tập hợp các thuật toán để xử lý chức năng và lựa chọn thuật
toán đúng đắn nhất khi thực hiện chương trình.


7. Ưu, nhược điểm
7.1. Ưu điểm







Chủ yếu tập trung vào hệ thống hoá các thuật toán có liên quan.
Dễ dàng thay đổi và mở rộng thuật toán mà không ảnh hưởng đến client.
Các thuật toán khác nhau được xử lý tách rời nên dễ dàng quản lý.

Loại bỏ các câu lệnh điều kiện khi chọn một chiến lược phù hợp.
Sử dụng các thuật toán trên một giao diện.


7. Ưu, nhược điểm
7.2. Nhược điểm

• Tăng độ phức tạp của mã tổng thể do tạo nhiều lớp bổ sung.
• Client phải biết được sự khác biệt giữa các chiến lược để chọn một
chiến lược phù hợp.

• Vấn đề giao tiếp giữa Strategy và Context.


8. Các mẫu liên quan
8.2. Decorator

• Decorator cho phép thay đổi bề ngoài của một đối tượng, một
strategy cho phép thay đổi ruột của đối tượng.


8. Các mẫu liên quan

method
• Template
• Decorator


8. Các mẫu liên quan
8.1. Template method


• Mẫu Template Method giống mẫu Strategy ở chỗ nó dựa trên thuật toán, định
nghĩa các lớp thuật toán và xử lý ở lớp con

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


9. Demo

Bài Toàn sắp xếp dãy số (tăng/giảm)với các giải thuật khác nhau.


TEMPLATE METHOD


NỘI DUNG


1. Định nghĩa

• Xác định một bộ khung chung của một thuật toán trong một chức năng
• Các phương thức mẫu cho phép các lớp con xác định lại các bước nhất định mà
không ảnh hưởng đến cấu trúc của thuật toán.


2. Mục đích

• Tạo sự thống nhất đồng bộ giữa Template method và lớp con.
• Tránh sự lặp lại vì phần chung đã định nghĩa rồi, chỉ cần định nghĩa phần

riêng.

• Tiết kiệm tài nguyên.


3. Cấu trúc

TemplateMethod: Phần khung để
cài đặt cấu trúc chung của thuật
toán.
PrimitiveOperation: Thay đổi theo
ngữ cảnh, việc cài đặt được ủy
nhiệm cho lớp kế thừa.


4. Những trường hợp áp dụng

hiện các phần chung của thuật toán và để các lớp con thực hiện hành
• Thực
vi có thể thay đổi.
lặp lại phần chung giữa các lớp con.
• Tránh
• Kiểm soát các phần mở rộng của lớp con.


5. Một số ví dụ
Ví dụ 1:



×