intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Mẫu thiết kế hướng đối tượng và ứng dụng: Mẫu Strategy - Nguyễn Minh Huy

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:10

29
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Mẫu thiết kế hướng đối tượng và ứng dụng: Mẫu Strategy" cung cấp cho người học các kiến thức: Ngữ cảnh mẫu Strategy, hướng tiếp cận mẫu Strategy, cài đặt, các vấn đề xung quanh. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Mẫu thiết kế hướng đối tượng và ứng dụng: Mẫu Strategy - Nguyễn Minh Huy

  1. Mẫu Strategy GV. Nguyễn Minh Huy Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 1
  2. Mẫu Strategy  Ngữ cảnh cảnh::  Bài toán toán::  Sắp xếp mảng mảng..  Thanh toán hóa đơn đơn..  Vẽ một loại hình hình..  Mục tiêu tiêu::  Có nhiều thuật toán xử lý cho một phương thức thức..  Có thể lựa chọn thuật toán khi chương trình thực hiện hiện..  Có thể thay đổi thuật toán lựa chọn nhiều lần. lần. Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 2
  3. Mẫu Strategy  Hướng tiếp cận cận::  Nhiều thuật toán xử lý khác nhau nhau::  Tạo lớp thuật toán tổng quát quát..  Tạo lớp kế thừa cho mỗi thuật toán cụ thể. thể.  Lựa chọn thuật toán xử lý cho phương thức thức::  Trang bị đối tượng thuật toán cho lớp chứa phương thức thức..  Khi gọi phương thức thức,, nhờ đối tượng thuật toán thực hiện hiện..  Thay đổi thuật toán lựa chọn nhiều lần: lần:  Cho phép cập nhật đối tượng thuật toán đã trang bị. bị. Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 3
  4. Mẫu Strategy  Hướng tiếp cận cận:: Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 4
  5. Mẫu Strategy  Cài đặt đặt:: class Receipt class Payment { { private: public: Payment* m_pay m_pay;; virtual double calculate() = 0; public: }; double calculate(); }; class CashPayment CashPayment:: public Payment { public: double Receipt::calculate() double calculate() calculate();; { }; return m_pay m_pay-->calculate() >calculate();; } class CreditCardPayment CreditCardPayment:: public Payment { public: double calculate() calculate();; }; Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 5
  6. Mẫu Strategy  Các vấn đề xung quanh quanh::  Cập nhật đối tượng thuật toán bằng cách nào nào? ?  Khởi tạo thông qua constructor.  Chỉ lựa chọn 1 lần, lần, không thể thay đổi lần sau sau..  Tạo phương thức truy xuất (get/set).  Phải lưu đối tượng thuật toán toán..  Cập nhật thông qua tham số phương thức thức.. class Receipt class Receipt class Receipt { { { private: private: public: Payment* m_pay m_pay;; Payment* m_pay m_pay;; double calculate(Payment* calculate(Payment* pay); pay); public: public: }; Receipt(Payment* pay); setPay(Payment* setPay (Payment* pay); double calculate(); double calculate(); }; }; Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 6
  7. Mẫu Strategy  Các vấn đề xung quanh quanh::  Phân biệt Strategy và Template Method: Tiêu chí Strategy Template Method Ý tưởng - Thay đổi toàn bộ thuật toán - Thay đổi một vài bước trong xử lý phương thức. thuật toán xử lý phương thức. - “Thay da đổi thịt”. - Giữ nguyên khung sườn. Cài đặt - Tách biệt cây thuật toán. - Sử dụng inheritance trên - Sử dụng composition đối chính lớp chứa phương thức. tượng thuật toán. Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 7
  8. Mẫu Strategy  Các vấn đề xung quanh quanh::  Phân biệt Strategy và kế thừa trực tiếp tiếp::  Giống nhau nhau:: đều có thể thay đổi xử lý của phương thức thức.. Tiêu chí Strategy Kế thừa trực tiếp Tính chất - Quan hệ HAS-A - Quan hệ IS-A (giữa Context và Algorithm) (giữa Context và Algorithm) Cài đặt - Tách biệt cây thuật toán. - Override lại phương thức.  “Bùng nổ” lớp kế thừa. Linh động - Lựa chọn thuật toán động - Lựa chọn thuật toán cứng (khi nào cần). (khi tạo lớp Context). - Thay đổi lựa chọn nhiều lần. Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 8
  9. Mẫu Strategy  Các vấn đề xung quanh quanh::  Hạn chế chế::  Tách biệt cây thuật toán toán..  Không thể truy xuất thành phần private lớp Context. class Receipt class CashPayment CashPayment:: public Payment { { private: public: Payment* m_pay m_pay;; double calculate() calculate();; double m_tax m_tax;; }; public: double calculate(); double CashPayment CashPayment::calculate() ::calculate() }; { double Receipt::calculate() // Làm sao truy xuất m_tax m_tax?? ?? { } return m_pay m_pay-->calculate() >calculate();; } Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 9
  10. Mẫu Strategy  Các vấn đề xung quanh quanh::  Hạn chế chế::  Cho phép thay đổi thuật toán xử lý. lý.  Tạo nhiều đối tượng thuật toán toán..  Tốn tài nguyên hệ thống thống..  Áp dụng Singleton!! Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy CuuDuongThanCong.com https://fb.com/tailieudientucntt 10
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
4=>1