我有相同 if() { try { < SOME CODE > } finally { } } else {}
我在 3 种方法中使用的 block 。
每种方法中唯一不同的是<某些。
是否有任何编码模式可以用来“干燥”我的代码?理想情况下希望提取 if() { try { } finally { } } else {}
到一些常见的结构并将
谢谢
最佳答案
您可以引入一种通用方法来分解公共(public)部分。
然后根据您的要求,您可以这样做:
1) 如果 3 个方法位于同一个类中:提取 3 个特定方法中 try
主体的每组语句,并将该方法作为 Runnable
参数传递在通用方法中。
例如:
public void commonMethod(Runnable methodToInvoke){
if() {
try { methodToInvoke.run() } finally { }
}
else {}
}
并通过传递 3 个提取的方法来调用它:
commonMethod(this::methodFoo);
commonMethod(this::methodBar);
commonMethod(this::methodFooBar);
2) 如果这 3 个方法位于不同的类中:引入这 3 个类将实现的接口(interface),并使公共(public)方法接受该接口(interface)的参数。
例如,引入了Processing
接口(interface):
public void commonMethod(Processing processing){
if() {
try { processing.doThat() } finally { }
}
else {}
}
并通过传递 Processing
接口(interface)的 3 个实现来调用它:
commonMethod(foo);
commonMethod(bar);
commonMethod(fooBar);
关于Java常见的Try/Finally block 围绕不同的代码块 - 代码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784197/