版权声明:本文为博主原创文章,未经允许不得转载。 https://blog.csdn.net/qq_24672657/article/details/83118525
建造者模式
概念
- 定义
- 将一个复杂对象的构建和它的表示分离,使得同一的构建过程可以创建不同的表示
- 用户只需要指定需要建造的类型就可以得到他们,建造过程及细节不需要知道
- 类型
- 创建型
- 试用场景
- 如果一个对象有非常复杂的内部结构(很多属性)
- 想把复杂对象的创建和使用分离
- 优点
- 封装性好,创建和使用分离
- 扩展性好、建造类之间独立、一定程度上解耦
- 缺点
- 产生对于的builder对象
- 产品内部发生变化,建造者都需要修改,成本较大
案例
Q:建造者和工厂模式之间的区别
使用建造者模式建一个课程类
public class Course {
private String coursePrice;
private String courseSize;
private String courseTeacher;
public Course (CourseBuild courseBuild){
this.coursePrice = courseBuild.coursePrice;
this.courseSize = courseBuild.courseSize;
this.courseTeacher = courseBuild.courseTeacher;
}
@Override
public String toString() {
return "Course{" +
"coursePrice='" + coursePrice + '\'' +
", courseSize='" + courseSize + '\'' +
", courseTeacher='" + courseTeacher + '\'' +
'}';
}
public static class CourseBuild{
private String coursePrice;
private String courseSize;
private String courseTeacher;
public CourseBuild buildCoursePrice(String coursePrice){
this.coursePrice = coursePrice;
return this;
}
public CourseBuild buildCourseSize(String courseSize){
this.courseSize = courseSize;
return this;
}
public CourseBuild buildCourseTeacher(String courseTeacher){
this.courseTeacher = courseTeacher;
return this;
}
public Course build(){
return new Course(this);
}
}
}
测试类
public class Test {
public static void main(String[] args) {
Course course = new Course.CourseBuilder().buildCourseName("Java设计模式精讲").buildCoursePPT("Java设计模式精讲PPT").buildCourseVideo("Java设计模式精讲视频").build();
System.out.println(course);
Set<String> set = ImmutableSet.<String>builder().add("a").add("b").build();
System.out.println(set);
}
}