我在很多地方重复了以下代码。我想知道Java中是否有任何常见的做法通过使用接口(interface)/功能接口(interface)/抽象类来定义这种重复的代码。 if 的内部逻辑不同,但 if else 和 log 的逻辑都是相同的。
Optional<ABC> factory = factoryResolver.resolve(XYZ);
if (factory.isPresent()) {
// Logic varies here
return X;
} else {
LOGGER.error("Some logs");
}
return Y;
最佳答案
您所做的本质上与使用 null
没有什么不同检查,但方式更加不透明和冗长。
更面向对象的解决方案是利用多态性。而不是返回 Optional<ABC>
,返回ABC
直接地。如果没有ABC
可以解决 XYZ
,您可以返回 UnresolvedABC
实现 ABC
的类以有意义的方式接口(interface)(例如抛出异常或记录错误)。
有关更多详细信息,请参阅 Null Design Pattern (维基百科)
关于java - 常见的If代码else代码java编程实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48882082/