デザインパターンアプローチで2つのアルゴリズムを作成したいと思います。ロボットは掃除をして最初の位置に戻ります。
部屋を掃除した後、掃除されたパスも必要です。
私はコマンドパターンを使用する予定です.しかし、1つの疑いがあります, 要件は、クリーンアルゴリズムとリターンアルゴリズムの両方が交換可能である必要があり、2つのアルゴリズムが必要であると言っています.
コマンドパターンに従って、実行されたすべてのコマンドをリストに保存し、パスを見つけることができます。しかし、どのパターンが最適なのか、まだ疑問があります (要件は 2 つ前が必要です)。
デザインを見て、きれいにして、別のインターフェイスから戻ってください。ファクトリを使用して交換可能にするのは難しいと思います...
public interface ICleaningAlgorithm {
void Clean(IRobot robot);
}
public interface IReturnAlgorithm {
void Return(IRobot robot);
}
Example classes (without implementation):
public class CleaningAlgorithm : ICleaningAlgorithm {
public void Clean(IRobot robot) {
/* pseudocode from the post */
}
}
public class ReturnAlgorithm {
public void Return(IRobot robot) {
/* some shortest path algorithm */
}
}
デザインUML画像添付