TheInvokerandICommandinterface được thực hiện với nhau như một đại biểu (dòng 9) với các đối tượng instantiated đại biểu (dòng 10). Tên của các đối tượng tham dự (theInvokers) được dựa trên những gì khách hàng muốn; areExecute tên làm lại, và lùi lại (dòng 10). Commandassociates đại biểu chỉ huy các đối tượng với hai phương pháp bên trong theReceiver, hành động, và ngược lại (đường số 14 – 16). ExecuteandRedo cả hai đi toAction, và Undogoes toReverse. Các Receiverkeeps theo dõi của nhà nước và chịu trách nhiệm về sản lượng. Sự sắp xếp này là không giống như các mô hình trước đó, nơi mà các máy thu trở về giá trị từ các lĩnh vực của họ cho khách hàng để hiển thị hoặc không. Để áp dụng cơ chế tương tự, chúng tôi sẽ làm cho các loại đại diện quay trở lại sau một chuỗi, như: đại biểu chuỗi CommandStr ();Việc thực hiện này là bao la ngắn hơn so với nhiều người trong số các tiêu chuẩn ones bởi vì nó sử dụng một loại hình đại diện (dòng 9) và instantiates cho ba đại diện các đối tượng trong một dòng (line 10). Giải pháp dựa trên đối tượng nào có ba lớp học riêng biệt của phương pháp duy nhất cho ba invokers. Triển khai Undo/Redo thực tế phụ thuộc vào các hoạt động thực tế để được hoàn tác hoặc làm lại. Trong mô hình chỉ huy, Undo và Redo phục vụ chỉ như là trừu tượng placeholders.Multireceiver lệnhĐiều gì sẽ xảy ra nếu chúng tôi có nhiều hơn một người đại diện loại trong cùng một chương trình, và cũng nhiều hơn một người nhận? Trước hết, các tên gọi của loại hình đại diện (Invokers) sẽ là khác nhau. Các đối tượng chỉ huy có thể cấu hình các trận đấu giữa các đối tượng người đại diện và differentReceivermethods theo yêu cầu.Trong chương trình sau đây, không có twoCommandclasses và twoReceivers. Bởi vì cả hai lệnh sử dụng các cùng đại diện các đối tượng (Invokers), executescommands khách hàng đầu tiên trong oneReceiverand sau đó ở khác; Tuy nhiên, đó có thể là một hạn chế không cần thiết. Để khắc phục nó, chúng tôi có thể giới thiệu thêm người đại diện đối tượng hoặc nhóm chúng bên trong theCommands, như minh hoạ trong ví dụ sau. Phiên bản multireceiver của mô hình chỉ huy trong ví dụ 8-4 minh họa ngoài ra làm thế nào để xử lý lệnh có thể không được liên kết với bất cứ điều gì có ý nghĩa trong một nhận định, như được hiển thị cho secondCommand (dòng 25-32). Undois không cho phép thực hiện lệnh này, do đó, chúng tôi chỉ định một đại diện vô danh để delegateobject mà viết ra một thông báo lỗi (dòng 30). Lưu ý rằng các văn bản không được thực hiện khi Hiệp hội được thực hiện, nhưng chỉ khi (và nếu) theClientcallsUndo. Ví dụ 8-4. Lệnh mô hình lý thuyết mã-phiên bản multireceiver
đang được dịch, vui lòng đợi..
