Chỉ huy:
Thành phần cơ bản:
- Lệnh khai báo một giao diện cho các lệnh trừu tượng như
execute()
- Người nhận biết cách thực hiện một lệnh cụ thể
- Invoker nắm giữ ConcreteCommand , phải được thực thi
- Máy khách tạo ConcreteCommand và chỉ định Người nhận
- ConcreteCommand định nghĩa ràng buộc giữa Command và Receiver
Quy trình làm việc:
Client gọi Invoker => Invoker gọi ConcreteCommand => ConcreteCommand gọi phương thức Receiver , phương thức này thực thi phương thức Command trừu tượng .
Ưu điểm : Khách hàng không bị ảnh hưởng bởi các thay đổi trong Lệnh và Bộ thu. Invoker cung cấp khớp nối lỏng lẻo giữa Máy khách và Người nhận. Bạn có thể chạy nhiều lệnh với cùng một Invoker.
Mẫu lệnh cho phép bạn thực hiện một lệnh trên các Bộ nhận khác nhaubằng cách sử dụng cùng một Invoker . Invoker không biết về loại Receiver
Để hiểu rõ hơn về các khái niệm, hãy xem bài viết JournalDev này của Pankaj Kumar và bài viết dzone của James Sugrue ngoài liên kết Wikipedia.
Bạn có thể sử dụng Command pattern để
Tách kẻ gọi và người nhận lệnh
Triển khai cơ chế gọi lại
Triển khai chức năng hoàn tác và làm lại
Duy trì lịch sử các lệnh
java.lang.Thread
là một trong những cách triển khai tốt của Command pattern. Bạn có thể coi Thread như invoker & lớp triển khai Runnable dưới dạng ConcreteCommonad / Receiver và run()
phương thức là Command .
Bạn có thể đọc phiên bản Undo / Redo của mẫu lệnh tại bài viết của Theodore Norvell
Chiến lược:
Mô hình chiến lược rất đơn giản để hiểu. Sử dụng mẫu này khi
Bạn có nhiều cách triển khai cho một thuật toán và việc triển khai thuật toán có thể thay đổi tại thời điểm chạy tùy thuộc vào các điều kiện cụ thể .
Lấy ví dụ về thành phần Giá vé của hệ thống đặt vé máy bay
Các hãng hàng không muốn cung cấp giá vé khác nhau trong các khoảng thời gian khác nhau - Tháng cao điểm và tháng thấp điểm. Trong những ngày cao điểm du lịch, nên kích cầu bằng cách giảm giá hấp dẫn.
Những điểm chính của mô hình Chiến lược :
- Đó là một khuôn mẫu hành vi
- Nó dựa trên sự ủy quyền
- Nó thay đổi ruột của đối tượng bằng cách sửa đổi hành vi của phương thức
- Nó được sử dụng để chuyển đổi giữa các nhóm thuật toán
- Nó thay đổi hành vi của đối tượng tại thời điểm chạy
Các bài viết liên quan với các ví dụ về mã:
Sử dụng mẫu thiết kế lệnh
Ví dụ về mô hình chiến lược trong thế giới thực