所以我目前正在做一些类的重构。我发现了一个类,它有两种方法。在第一种方法中,它具有以下if-Statement:
if(sapData.getTime > 100 || sapData.getUserName != null && sapData.getBusinessValue > 0)
(请记住,我有点轻松了。)
在第二种方法中,我有:
if(data.getTime > 100 || data.getNameOfUser != null && data.getBValue > 0)
如您所见,if语句背后的逻辑完全相同。但是sapData和data是不同的对象,而Methods(实际上只是吸气剂)具有不同的名称。
我现在想做的是编写一种方法isValid
,可以在其中传递SapData对象或Data对象。
继承不是一种选择,因为应该将它们分开。
如果您使用的是Java的较新版本,将getters方法传递isValid
给特定类并对该方法进行重载可能是合适的:
public static <T> boolean isValid(T data,
Function<? super T, Integer> timeGetter,
Function<? super T, String> usernameGetter,
Function<? super T, Integer> businessValueGetter) {
return (timeGetter.apply(data) > 100 || usernameGetter.apply(data) != null && businessValuesGetter.apply(data) > 0);
// or something more complex
}
public static boolean isValid(Data data) {
return isValid(data, Data::getTime, Data::getUserName, Data::getBusinessValue);
}
public static boolean isValid(SapData data) {
return isValid(data, SapData::getTime, SapData::getUserName, SapData::getBusinessValue);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句