【发布时间】:2019-03-08 10:59:45
【问题描述】:
所以,这个代码元素有可能变得非常丑陋。有可能在每个 if 语句以及更多 if/else 语句中向列表中添加多个元素。设计这段代码的最佳模式或方式是什么。我在考虑责任链,但这意味着到处传递列表,这不是最好的,甚至不是构建器模式?有什么想法吗??
List<String> aList = new ArrayList<>();
if (something.contains(Effect.HARD)) {
aList.add("");
}
if (something.contains(Effect.REFLECT)) {
aList.add("");
aList.add("");
} else {
aList.add("no reflect");
}
if (something.contains(Effect.OUTLINE)) {
aList.add("something");
}
if (something.contains(Effect.GRADIENT)) {
aList.add("gradient");
} else {
aList.add("no gradient");
}
【问题讨论】:
-
"...如果是 y"?一个“y”是什么?
-
不确定如何将其放入模式中。创建了一个模式来处理以相同方式工作的事件/事物/...,但这里似乎并非如此。
-
至于你的问题,能不能详细说说你的真正问题?这段代码应该解决什么问题?如果我们知道您要解决的实际问题是什么,我们就更容易提出另一个可能更好的解决方案。现在,您的问题是XY problem。
-
您可以使用策略模式来实现您正在检查 Contains 的 switch case 类型的功能,每个 contains 都有可能成为一种策略,使您的代码保持干净和可读。
标签: java design-patterns