我有在 3 种方法中使用的相同 if() { try { < SOME CODE > } finally { } } else {}
块。
每种方法唯一不同的是< SOME CODE >。
是否有任何编码模式可用于“干燥”我的代码?理想情况下,希望提取if() { try { } finally { } } else {}
一些通用结构并将 < SOME CODE > 传递给它。这在Java中可能吗?
谢谢
我有在 3 种方法中使用的相同 if() { try { < SOME CODE > } finally { } } else {}
块。
每种方法唯一不同的是< SOME CODE >。
是否有任何编码模式可用于“干燥”我的代码?理想情况下,希望提取if() { try { } finally { } } else {}
一些通用结构并将 < SOME CODE > 传递给它。这在Java中可能吗?
谢谢
您可以引入一种通用方法来分解出通用部分。
然后根据您的要求,您可以这样做:
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个类将实现的接口并使公共方法接受该接口的参数。
例如,Processing
引入了一个接口:
public void commonMethod(Processing processing){
if() {
try { processing.doThat() } finally { }
}
else {}
}
并通过传递接口的 3 个实现来调用它Processing
:
commonMethod(foo);
commonMethod(bar);
commonMethod(fooBar);