每个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