和往常一样,如果两个或多个方法基本上是相同的,并且您希望避免代码重复,那么您必须找到一个不同的抽象,在这种情况下,调用
a
或
b
,在生成器上:
private static SampleClass getSampleClassWith(
String value, BiFunction<SampleClassBuilder,String,SampleClassBuilder> property,
String c, Function<String, String> mapper) {
return property.apply(SampleClass.builder(),value).c(c).d(mapper.apply(value)).build();
}
getSampleClassWith("a", SampleClassBuilder::a, "c", StringModifier::postfixUnderscore);
getSampleClassWith("b", SampleClassBuilder::b, "c", StringModifier::prefixUnderscore);