【发布时间】:2018-09-02 22:10:57
【问题描述】:
基于 SO 上的各种线程(例如 Replace Multiple If\Else with Design Pattern 或 Replacing if else statement with pattern )我知道我可以用 Command pattern 替换多个 if\else statements。
但是对于我这个级别的人来说,答案远非简单或详细..我将有 60 个else if 块..并进行了一些研究,我发现命令模式是最好的..搜索有关如何使用的教程到那个一步一步似乎很难,因为我发现的一切都是在复杂的问题中解释的。相信我,如果我没有进行大量研究并放弃互联网,我不会在这里提出问题! (我相信这个问题的答案会受到试图实现相同目标的人的赞赏,因为到目前为止互联网上还没有明显且结构良好的答案)
编辑2:
这是我所有 else if 块的结构:
else if (data.equals("Exercice Inolerance, ")) {
AddCode(mmDatabase.getTesta2());}
else if (data.equals("Neta, ")) {
AddCode(mmDatabase.getTesta3());}
PS:itemList.add 的范围可以是 1 到 10!
如何逐步将其转换为命令模式..谢谢!
Item.Java
public class Item {
private String name = "";
public Item() {
}
public Item(String name){
this.name = name;
}
public String getItemName() {
return name;
}
public void setItemName(String name) {
this.name = name;
}
}
【问题讨论】:
-
你可能不会。你以错误的方式思考模式。模式的重点不是每次都尽可能地使用它。它能够识别设计方法并在适用的情况下使用它们,并向其他人描述您的设计。在这种情况下,使用命令模式几乎没有意义——它几乎不会增加代码的清晰度。
-
@Gabe Okey 谢谢 .. 还有其他方法可以简化我的代码,或者我应该手动执行(每次在 else if 下添加 bloc 并更改它?)
-
您可以将单个 if 分解为它们自己的函数。如果代码变大,这将提高清晰度。如果命令模式的静态选项集相对较小,我并没有真正看到通过为命令模式投入大量开销来提高可读性或可维护性。现在,如果我们谈论的是在运行时注册的选项的变量列表,那将是一个不同的答案。
-
如果每个分支的大部分自定义代码都是关于为意图设置参数,请考虑在每个新活动上使用静态 createIntent 函数。这有一些好处,包括将创建 Activity 意图的所有逻辑保留在实际类中(如参数名称)。
-
@Gabe Sechan 非常感谢您的回答..但这似乎很难..应用你所说的,我是 android 新手,这是我正在开发的第一个应用程序..我不介意手动做这些事情,我想我可以处理改变每个集团..但它好吗?这样做可以接受吗?这就是我所担心的..如果我通过创建 60 else if bloc 并手动更改它们来做一些愚蠢的事情..那么如果我手动执行它们又可以吗?再次感谢