Đị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ớ
Trang 1THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
TEMPLATE METHOD & STRATEGY
Trang 2STRATEGY PATTERN
Trang 3•Định
nghĩa
2
•Mụ
c đích
3
•Cấu
trúc
4
•Nhữn
g trường
h
ợp á
p dụng
5
•Mộ
t s
ố v
í dụ
6
•Tín
h chất
7
•Ưu, như
ợc điểm
8
•Các
mẫu liê
n quan
9
•Dem
o
NỘI DUNG
Trang 41 Đị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
Trang 52 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
Trang 63 Cấu trúc
Context: Sử dụng giao diện này
để gọi thuật toán được định
nghĩa bởi ConcreteStrategy
Strategy: Mô tả một giao diện
chung cho tất cả các thuật toán được hỗ trợ
Triển khai các thuật toán sử dụng
giao diện Strategy
Trang 85 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.
Trang 95 Một số ví dụ
Trang 10-strategy
Trang 115 Một số ví dụ
Ví dụ2: Sắp xếp dãy số cho trước.
Trang 137 Ưu, nhược đ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.1 Ưu điểm
Trang 147 Ưu, 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
7.2 Nhược điểm
Trang 158 Các mẫu liên quan
• 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.2 Decorator
Trang 168 Các mẫu liên quan
• Template method
• Decorator
Trang 178 Các mẫu liên quan
• 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
8.1 Template method
Trang 189 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
Trang 19TEMPLATE METHOD
Trang 20NỘI DUNG
Trang 211 Đị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
Trang 222 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
Trang 233 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.
Trang 244 Những trường hợp áp dụng
• Thực 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
vi có thể thay đổi
• Tránh lặp lại phần chung giữa các lớp con
• Kiểm soát các phần mở rộng của lớp con
Trang 255 Một số ví dụ
Ví dụ 1:
Trang 265 Một số ví dụ
Ví Dụ 1:Thời Gian Biểu
Trang 275 Một số ví dụ
Ví Dụ 1:Sắp Xếp Dãy Số Tăng/Giảm
Trang 287 Ưu, nhược điểm
• Khó mở rộng, phụ thuộc quá nhiều vào lớp cơ sở.
• Khó khăn trong việc thiết lập các chức năng.
• Khó khăn trong việc duy trì.
7.2 Nhược điểm
Trang 307 Ưu, nhược điểm
• Hạn chế được phần lớn lượng code giống nhau vì lớp con chỉ cần phải thay đổi 1 vài bước trong thuật toán cho phù hợp.
• Thay đổi thuật toán ở lớp con dễ dàng.
• Dễ dàng kiểm soát các lớp con có chung một thuật toán của lớp Abstract.
• 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.
7.1 Ưu điểm
Trang 318 Các mẫu liên quan
• Factory Method
• Strategy
Trang 328 Các mẫu liên quan
• Factory Method thường được gọi bởi Template Method
• Đều để subclass triển khai abstract method từ lớp cha
• Tuy nhiên, Factory method thuộc nhóm Creational (Nhóm khởi tạo) nên mục đích là khởi tạo ra đối tượng, còn Template method là để lớp con quyết định nội dung
8.1 Factory method
Trang 338 Các mẫu liên quan
• Template method sử dụng thừa kế để thay đổi một phần của một thuật toán Strategy sử dụng ủy quyền để thay đổi toàn bộ thuật toán
8.2 Strategy
Trang 349 Demo
Bài Toán Sắp Xếp Tăng Giảm