工厂模式强调的是将对象看成一个整体,根据条件创建并返回不同的对象,而建造者模式更加注重对象的建造过程(即对象内部零件装配的实现);
@Data
@Builder
class Hobby{
String name;
String desc;
String type;
}
@Data
class Student {
private String name;
private Hobby hobby;
private LocalDateTime time;
}
class StudentBuilder{
static Student student;
public StudentBuilder(){
student = new Student();
student.setName("张三");
student.setTime(LocalDateTime.now());
}
static StudentBuilder newBuilder(){
return new StudentBuilder();
}
StudentBuilder name(String name){
student.setName(name);
return this;
}
StudentBuilder hobby(String name){
Hobby build = Hobby.builder()
.name(name)
.desc(name)
.type("666")
.build();
student.setHobby(build);
return this;
}
StudentBuilder time(LocalDateTime time){
student.setTime(time);
return this;
}
Student builder(){
return student;
}
}
public class BuilderTest {
public static void main(String[] args) {
Student student = StudentBuilder.newBuilder().hobby("ping-pong").builder();
System.out.println(student);
}
}