1. Trang chủ
  2. » Công Nghệ Thông Tin

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

10 89 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 381,22 KB

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

Nội dung

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.

Trang 1

GV

GV NguyễnNguyễn Minh Minh HuyHuy

Mẫu

1 Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh HuyCuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 2

Mẫu Strategy Strategy

 Ngữ Ngữ cảnh cảnh::

 Bài Bài toán toán::

 SắpSắp xếpxếp mảngmảng

 ThanhThanh toántoán hóahóa đơnđơn

 VẽVẽ mộtmột loạiloại hìnhhình

 Mục Mục tiêu tiêu::

 Mục Mục tiêu tiêu::

 CóCó nhiềunhiều thuậtthuật toántoán xửxử lýlý chocho mộtmột phươngphương thứcthức

 Có thểCó thể lựalựa chọnchọn thuậtthuật toántoán khikhi chươngchương trìnhtrình thựcthực hiệnhiện

 Có thểCó thể thaythay đổiđổi thuậtthuật toántoán lựalựa chọnchọn nhiềunhiều lầnlần

Trang 3

Mẫu Strategy Strategy

 Hướng Hướng tiếp tiếp cận cận::

 Nhiều Nhiều thuật thuật toán toán xử xử lý lý khác khác nhau nhau::

 TạoTạo lớplớp thuậtthuật toántoán tổngtổng quátquát

 TạoTạo lớplớp kếkế thừathừa chocho mỗimỗi thuậtthuật toántoán cụcụ thểthể

 Lựa Lựa chọn chọn thuật thuật toán toán xử xử lý lý cho cho phương phương thức thức::

Trang Trang bịbị đốiđối tượngtượng thuậtthuật toántoán chocho lớplớp chứachứa phươngphương thứcthức

 TrangTrang bịbị đốiđối tượngtượng thuậtthuật toántoán chocho lớplớp chứachứa phươngphương thứcthức

 KhiKhi gọigọi phươngphương thứcthức, , nhờnhờ đốiđối tượngtượng thuậtthuật toántoán thựcthực hiệnhiện

 Thay Thay đổi đổi thuật thuật toán toán lựa lựa chọn chọn nhiều nhiều lần lần::

 Cho Cho phépphép cậpcập nhậtnhật đốiđối tượngtượng thuậtthuật toántoán đãđã trangtrang bịbị

3 Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh HuyCuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 4

Mẫu Strategy Strategy

 Hướng Hướng tiếp tiếp cận cận::

Trang 5

Mẫu Strategy Strategy

 Cài Cài đặt đặt::

class

class Receipt Receipt

{{

private:

Payment*

Payment* m_pay m_pay;;

public:

double calculate();

class

class Payment Payment

{{

public:

virtual double

virtual double calculate() calculate() = 0;= 0;

};

class

class CashPayment CashPayment: public Payment: public Payment };

double Receipt::calculate()

{{

return

return m_pay m_pay >calculate() >calculate();;

}}

5 Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy

class

class CashPayment CashPayment: public Payment: public Payment {{

public:

double

double calculate() calculate();;

};

class

class CreditCardPayment CreditCardPayment: public Payment: public Payment {{

public:

double

double calculate() calculate();;

};

Trang 6

Mẫu Strategy Strategy

 Các Các vấn vấn đề đề xung xung quanh quanh::

 Cập Cập nhật nhật đối đối tượng tượng thuật thuật toán toán bằng bằng cách cách nào nào? ?

 KhởiKhởi tạotạo thôngthông qua constructor.qua constructor



 ChỉChỉ lựalựa chọnchọn 1 1 lầnlần, , khôngkhông thểthể thaythay đổiđổi lầnlần sausau

 TạoTạo phươngphương thứcthức truytruy xuấtxuất (get/set).(get/set)



 PhảiPhải lưulưu đốiđối tượngtượng thuậtthuật toántoán



 PhảiPhải lưulưu đốiđối tượngtượng thuậtthuật toántoán

 CậpCập nhậtnhật thôngthông qua qua thamtham sốsố phươngphương thứcthức

class

class Receipt Receipt

{{

private:

Payment*

Payment* m_pay m_pay;;

public:

setPay setPay(Payment* pay); (Payment* pay);

double calculate();

};

class

class Receipt Receipt

{{

private:

Payment*

Payment* m_pay m_pay;;

public:

Receipt(Payment* pay);

double calculate();

};

class

class Receipt Receipt

{{

public:

double calculate(

double calculate(Payment* pay Payment* pay);); };

Trang 7

Mẫu Strategy Strategy

 Các Các vấn vấn đề đề xung xung quanh quanh::

 Phân Phân biệt biệt Strategy Strategy và và Template Method: Template Method:

Tiêu chí Strategy Template Method

Ý tưởng - Thay đổi toàn bộ thuật toán

xử lý phương thức.

- “Thay da đổi thịt”.

- Thay đổi một vài bước trong thuật toán xử lý phương thức.

- Giữ nguyên khung sườn.

7 Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy

- “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 composition đối tượng thuật toán.

- Sử dụng inheritance trên chính lớp chứa phương thức.

Trang 8

Mẫu Strategy Strategy

 Các Các vấn vấn đề đề xung xung quanh quanh::

 Phân Phân biệt biệt Strategy Strategy và và kế kế thừa thừa trực trực tiếp tiếp::

 GiốngGiống nhaunhau: : đềuđều cócó thểthể thaythay đổiđổi xửxử lýlý củacủa phươngphương thứcthức

Tiêu chí Strategy Kế thừa trực tiếp

Tính chất - Quan hệ HAS-A

(giữa Context và Algorithm)

- Quan hệ IS-A (giữa Context và Algorithm) (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

(khi nào cần).

- Thay đổi lựa chọn nhiều lần.

- Lựa chọn thuật toán cứng (khi tạo lớp Context).

Trang 9

Mẫu Strategy Strategy

 Các Các vấn vấn đề đề xung xung quanh quanh::

 Hạn Hạn chế chế::

 TáchTách biệtbiệt câycây thuậtthuật toántoán



 KhôngKhông thểthể truytruy xuấtxuất thànhthành phầnphần private private lớplớp Context.Context

class

class Receipt Receipt

{{

class

class CashPayment CashPayment: public Payment: public Payment {{

{{

private:

Payment*

Payment* m_pay m_pay;;

double

double m_tax m_tax;;

public:

double calculate();

};

double Receipt::calculate()

{{

return

return m_pay m_pay >calculate() >calculate();;

}}

9 Mẫu thiết kế hướng đối tượng & ứng dụng - Nguyễn Minh Huy

{{

public:

double

double calculate() calculate();;

};

double double CashPayment CashPayment::calculate() ::calculate() {{

//

// Làm Làm sao sao truy truy xuất xuất m_tax m_tax?? ??

}}

Trang 10

Mẫu Strategy Strategy

 Các Các vấn vấn đề đề xung xung quanh quanh::

 Hạn Hạn chế chế::

 Cho Cho phépphép thaythay đổiđổi thuậtthuật toántoán xửxử lýlý



 TạoTạo nhiềunhiều đốiđối tượngtượng thuậtthuật toántoán



 TốnTốn tàitài nguyênnguyên hệhệ thốngthống



 ÁpÁp dụngdụng Singleton!!Singleton!!



 ÁpÁp dụngdụng Singleton!!Singleton!!

Ngày đăng: 11/01/2020, 19:15

TỪ KHÓA LIÊN QUAN

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