変更する元のプログラム コード:
/このメソッドは定期的に呼び出され、db からデータを取得し、それにいくつかの操作を実行し、結果をファイルに格納します。このファイルは、すべての処理の最後に ftp 経由で送信されます/
void pullData(){
while(!stopped){
rows= getRowsFromDb();
for (row: rows){
newRow= process(row);
rowsContainer.add(newRow)
}
writeToFile(rowsContainer);
sendFileSomewhere();
}
}
次に、このコードを変更して、次のコマンドを発行できるようにする必要があります。1 行のみを処理します。1 行スキップします (コマンドは後で追加します)。これを行うために、アプリケーションは一時停止モードになり、上記で概説した 2 つのコマンドのいずれかを取得するまで行を処理しません。また、一時停止モードから再開して、通常の処理に戻すこともできます。
問題はこれをどのように行うかではなく、それを行う正しい方法です。
(1) 誰かが各操作のブール値フラグを提案しました。これはかなり悪い考えです。多くの理由でフラグを避けることをお勧めします (スタック オーバーフローについても議論されているものもあります)。
(2) もう 1 つのアイデアは、isSuspended に bool フラグを使用し、コマンドに enum を使用することでした。これは (1) よりも優れていますが、アプリは最後のコマンドがどれであるか、およびそれが中断モードにあるかどうかを確認し、それに応じて動作する必要があるため、多くはありません。
(3) アプリケーションを分割して Strategy パターンを使用することを考えていました。各コマンドは、アプリケーションで独自のメソッドを取得します。これはもう少し複雑ですが、私にはずっときれいに見えます。
何を提案しますか (私がリストしたオプションから選択する必要はありません。同様の状況をどのように処理したかを聞きたいです)?