因此,此代码元素可能会变得很丑陋。有可能在每个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");
}
答案 0 :(得分:0)
通常,您会用多态代码替换这些难看的条件,但是由于条件(something.contains(...)
)不是基于对象的类型,因此在这里不能很好地工作。您可以将它们变成对象,但这也不是一个很好的解决方案。可以使用Builder和Visitor,但是我非常怀疑您的代码会更易读。