原程序代码修改:
/这个方法被定期调用,它从 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) 另一个想法是对 isSuspended 使用 bool 标志,对命令使用 enums。这比(1)好,但不是很多,因为应用程序需要检查哪个命令是最后一个命令,以及它是否处于暂停模式并采取相应的行动。
(3) 我正在考虑拆分应用程序并使用策略模式。每个命令都会在应用程序中获得它自己的方法。这有点复杂,但对我来说似乎更干净。
你有什么建议(你不需要从我列出的选项中选择,我想听听你是如何处理类似情况的)?