我有一个实例,我需要更新字段并将实例传递给另一个方法。
我要更新实例的10个以上字段(使用mutator / setter方法)。
在每种情况下更新字段,我使用instancevariable.setXXXX()方式......
有没有更好的方法来避免冗余,就像我每次使用instancevariable.setXXX一样?我不是班级的老板,我的方法类似于
public AClass method1(AClass instance) {
instance.setField1(value);
instance.setField2(value);
.
.
.
instance.setField10(value);
return instance;
}
答案 0 :(得分:1)
假设您不是类AClass
的所有者,最好在单独的类中提取所有用于设置参数的逻辑。以下是一些示例,具体取决于您获取参数value
的位置:
值每次都不同
public static class AClassInitializer {
private final AClass pattern;
private String value1;
private String value2;
private AClassInitializer(AClass pattern) {
this.pattern = pattern;
}
public AClassInitializer field1(String value1) {
this.value1 = value1;
return this;
}
public AClassInitializer field2(String value2) {
this.value2 = value2;
return this;
}
public AClass init() {
pattern.setField1(value1);
pattern.setField2(value2);
return pattern;
}
}
public AClass method1(AClass instance) {
return new AClassInitializer(instance).field1(value1).field2(value2).init();
}
每次的值都相同
public static class AClassInitializer {
private final String value1;
private final String value2;
public AClassInitializer(String value1, String value2) {
this.value1 = value1;
this.value2 = value2;
}
public AClass init(AClass pattern) {
pattern.setField1(value1);
pattern.setField2(value2);
return pattern;
}
}
AClassInitializer aClassInitializer = new AClassInitializer(value1, value2);
public AClass method1(AClass instance) {
return aClassInitializer.init(instance);
}