Java设计模式--建造者模式
在了解之前,先假设有一个问题,我们需要创建一个学生对象,属性有name,number,class,sex,age,school等属性,如果每一个属性都可以为空,也就是说我们可以只用一个name,也可以用一个school,name,或者一个class,number,或者其他任意的赋值来创建一个学生对象,这时该怎么构造?
难道我们写6个1个输入的构造函数,15个2个输入的构造函数.......吗?这个时候就需要用到Builder模式了。给个例子,大家肯定一看就懂:
/** * 建造者模式(Builder) * @author 尘世间迷茫的小书童 * */ public class Builder { static class Student{ private int studentNo; private String name; private String sex; private int age; private String classNo; private String school; //构建器,利用构建器作为参数来构建Student对象 static class StudentBuilder{ private int studentNo = -1; private String name = null; private String sex = null; private int age = -1; private String classNo = null; private String school = null; public StudentBuilder setStudentNo(int studentNo) { this.studentNo = studentNo; return this; } public StudentBuilder setName(String name) { this.name = name; return this; } public StudentBuilder setSex(String sex) { this.sex = sex; return this; } public StudentBuilder setAge(int age) { this.age = age; return this; } public StudentBuilder setClassNo(String classNo) { this.classNo = classNo; return this; } public StudentBuilder setSchool(String school) { this.school = school; return this; } public Student build() { return new Student(this); } } public Student(StudentBuilder builder){ this.age = builder.age; this.name = builder.name; this.school = builder.school ; this.sex = builder.sex ; this.classNo = builder.classNo; this.studentNo = builder.studentNo; } } public static void main(String[] args) { Student a = new Student.StudentBuilder().setAge(23).setName("LiHua").build(); Student b = new Student.StudentBuilder().setSchool("晋中职业技术学院").setSex("男").setName("ZhangSan").build(); } }