Thiết kế
Thiết kế của mẫu Command được thể hiện trong hình 8-6. TheClienthas một cách nào đó để nói những gì là cần thiết, thường là ở cấp cao và các điều khoản tên miền cụ thể. Nó nghĩ rằng trong điều kiện của lệnh như Cut, Redo, Open, và như vậy. TheReceivers- và có thể có nhiều, biết làm thế nào để thực hiện những yêu cầu này. Đề cập đến các ví dụ thực đơn, một lệnh Cut cho văn bản sẽ đi đến một phần của một hệ thống và một lệnh Cut cho một hình ảnh sẽ được xử lý ở những nơi khác.
TheCommand lớp tạo các giao diện giữa các Clientand theReceivers. Trong một
đối tượng Command, yêu cầu theClient của được công bố và kết hợp với các hoạt động tương ứng khả thi trong aReceiver. Cũng có thể là một tình trạng mà các Clientwants để truyền lại cho theReceiver, và điều này phải được cho phép. Các Invokeris có để xa theClientfrom theReceiver.
Nói đơn giản, theClientissues một cuộc gọi đến Executein các Invoker, và yêu cầu đi vào Commandand sau đó toActionin các nhận. Trong một chương trình, có thể có nhiều yêu cầu của các loại khác nhau đang được chuyển đến Bộ thu khác nhau. TheICommandinterface đảm bảo rằng tất cả họ đều phù hợp với một dạng chuẩn. Các cầu thủ trong mô hình này là:
Khách hàng
Tạo và executesCommands
ICommand
Một giao diện mà xác định theExecuteoperation
Invoker
Hỏi các theCommandto thực hiện theAction
lệnh
Một lớp mà thực hiện theExecuteoperation bằng cách gọi các hoạt động trên
Receiver
Receiver
Bất kỳ lớp học mà có thể thực hiện các requiredAction
hành động
Các hoạt động mà cần phải được thực hiện
các mẫu Command dường như có nhiều cầu thủ, nhưng một số trong số họ rơi ra khi các đại biểu được sử dụng, như thể hiện trong phần tiếp theo. Các khía cạnh khác của thiết kế là:
• Các lệnh có thể được lắp ráp thành các lệnh composite trong theCommandclass.
• lệnh mới có thể được thêm vào mà không làm phiền những cái hiện có.
đang được dịch, vui lòng đợi..
