每個GoF設計模式(wikipedia),ConcreteCommand
實例應該(必須)具有到Receiver
實例的鏈接(參考)。我執行以下命令:正確的命令設計模式實現需要鏈接到接收器嗎?
internal class PutBlockOntoBlockCommand : ICommand {
private readonly int _srcTower;
private readonly int _dstTower;
public PutBlockOntoBlockCommand(int srcTower, int dstTower) {
_srcTower = srcTower;
_dstTower = dstTower;
}
public void Execute(Robot robot, Construction construction) {
robot.MoveBlocks(_srcTower, _dstTower, construction);
}
}
該命令指示機器人在建築工地上移動塊。注意命令的實例沒有提及接收器(機器人)的實例;相反,命令依賴於Invoker
(在我的情況下爲RobotCommandCenter
)來提供Robot
的實例來執行該命令。
我深信,一個命令是一個命令,它應當僅封裝的意圖,應該不負責指定命令的目標。就我而言,作爲一個用戶,我並不在乎使用哪個機器人來執行作業。
所以我的問題是:它是否在技術上有效提及作爲「命令設計模式」提出的實現?
我有書,無法鏈接,所以我指的是來源。沒有「英國警察」這樣的東西,並不意味着「我很好」是正確的。請注意,我問我的實現是否是「技術上」的命令設計模式。 – 2012-03-12 21:18:06
@ THX-1138這就是我的意思,但我不知道Command模式有一個「技術定義」。我想用我的「設計模式警察」的幽默聲明來說,這是主觀的。我的意見如我上面所述。 – tcarvin 2012-03-13 11:58:26