Go 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);
}
}
このコマンドは、ロボットに建設現場のブロックを移動するよう指示します。このコマンドのインスタンスに受信者(ロボット)のインスタンスへの参照がないことに注意してください。その代わりに、コマンドはRobot
のインスタンスを指定してコマンドを実行するためにInvoker
(私の場合はRobotCommandCenter
)に依存しています。
は、私は、コマンドがコマンドであるために、それはのみ意思をカプセル化するものと確信しています、とないは、コマンドのターゲットを指定するための責任を負わなければなりません。私の場合、ユーザーとしては、どのロボットを使ってジョブを実行するかは気にしません。
私の質問です: "コマンドデザインパターン"として提示された実装を参照することは技術的に有効ですか?
私は本を持っていますが、リンクできなかったので、私はソースを参照しています。 "英語の警察"のようなものはありません、 "私は良い"を意味するものではありませんが正しいです。私の実装が "技術的に"コマンドデザインパターンであるかどうか尋ねたことに注目してください。 –
@ THX-1138それは私が意味したことですが、私はコマンドパターンに「技術的な定義」があることを知らない。私が「デザインパターン警察」というユーモラスな発言で主張しているのは、それが主観的だということです。私の意見は、私が上記に述べた通りです。 – tcarvin