通常我们创建一个对象,比如说Student student = new Student(),里面有一大堆乱起八糟属性,我们后面new对象进行操作时,可能涉及到set属性值,可能导致这种情况:
Student student = new Student();
student.setXXX(XXX);
student.setXXX(XXX);
student.setXXX(XXX);
student.setXXX(XXX);
student.setXXX(XXX);
student.setXXX(XXX);
student.setXXX(XXX);
student.setXXX(XXX);
如果有很多属性,比如十几个时候,那也就是说光创建一个对象就花了十几行,代码规范里面不允许一个方法超过50行的,而且阅读代码时也很难看,不简洁
那么我们还如何写呢?
个人推荐with链式set
StudentModel model = StudentModel.StudentModelBuilder .generateStudentModel() .withId(XXX) .withAppCode(XXXX) .withCluster(XXXX) .withPod(XXXX) .withSchool(XXX) .withClusterId(XXX) .build();
这些无需换行写,看起来很简洁,而且多个with可以写在一行
如果生成with方法呢?自己写也可个构造者模式,也可以使用idea的插件Builder Generator
要set的类内部定义静态内部类: public static final class SchoolModelBuilder { private SchoolModel schooModel; private SchoolModelBuilder() { schoolModel = new SchoolModel(); } public static SchoolModelBuilder generateSchoolModel() { return new SchoolModelBuilder(); } public SchoolModelBuilder withId(Long id) { schoolModel.setId(id); return this; }
// TODO with其它属性
public SchoolModel build() { return schoolModel; }
}
lombok中自带注解链式 写法,比如:
@Accessors(chain = true) //链式写法 public class EduAstInstallImagesBo {
}