最近在温习设计模式,所以决定记录到csnd,一下是学习示例
构建建造者模式的基类
public class Student { public Student(){} public Student(String name, int age, String gender) { this.name = name; this.age = age; Gender = gender; } //姓名 private String name; //年龄 private int age; //性别 private String Gender; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return Gender; } public void setGender(String gender) { Gender = gender; } @Override public String toString(){ return "name:"+this.name+"\nage:"+this.age+"\ngender:"+this.Gender; } }
利用多态向上转型,以便实现链式创建
public interface StudentBuilder { StudentBuilder setName(String name); StudentBuilder setAge(int age); StudentBuilder setGender(String gender); Student build(); }
实现上边接口
public class ImplStudentBuilder implements StudentBuilder { private Student student; public ImplStudentBuilder() { this.student = new Student(); } @Override public StudentBuilder setName(String name) { this.student.setName(name); return this; } @Override public StudentBuilder setAge(int age) { this.student.setAge(age); return this; } @Override public StudentBuilder setGender(String gender) { this.student.setGender(gender); return this; } @Override public Student build() { return this.student; } }
编写调用demo
public class CreateStudentDemo { public static void main(String[] args) { Student build = new ImplStudentBuilder().setName("张三").setAge(18).setGender("男").build(); System.out.println(build); } }
运行结果
构建者模式跟lombok 插件的builder注解用户一致,如果不用建造者模式,builder也可以实现链式创建