java - 常见的If代码else代码java编程实践

标签 java java-8

我在很多地方重复了以下代码。我想知道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/

相关文章:

java - @Repository注解可以继承吗?

java - 如何通过调用反射方法检测属性何时被修改

java - 在 Jetty6 中优先使用强密码 [JAVA]

java - Java 8 中如何处理货币?

java - 如何分组然后映射流

java - JPA 存储库属性表达式

java - 如何从JSP中获取java类的对象

java - 将带有 lambda 表达式的 Java 8 代码转换为 Java 6

java - 如何将日历对象转换为即时对象?

java - 在包含 lambda 表达式的字段上使用 ConstraintValidator 问题