【建造者模式】

发布于:2024-09-18 ⋅ 阅读:(7) ⋅ 点赞:(0)

建造者模式 Builder Pattern

  • 属于创建型模式
  • 是将一个复杂对象的构建与它的标识分离,使得同样的构建过程可以创建不同的表示
  • 关键点:用户只需要指定需要建造的类型就可以获得对象,建造过程及细节不需要了解

实现 demo

需要构建的对象

@Data
public class Course {
    private String name;
    private String ppt;
    private String video;
    private String note;
    private String homework;
} 

构造者

public class CourseBuilder {
    
    private Course course = new Course();
    
    public CourseBuilder name(String name) {
        course.setName(name);
        return this;
    }
    
    public CourseBuilder ppt(String ppt) {
        course.setPpt(ppt);
        return this;
    }
    
    public CourseBuilder video(String video) {
        course.setVideo(video);
        return this;
    }
    
    public CourseBuilder note(String note) {
        course.setNote(note);
        return this;
    }
    
    public CourseBuilder homework(String homework) {
        course.setHomework(homework);
        return this;
    }
    
    static CourseBuilder builder(){
        return new CourseBuilder();
    }
    
    public Course build() {
        return course;
    }
    
}

测试及结果

public class Test {
    public static void main(String[] args) {
        Course course = CourseBuilder.builder()
                .name("name")
                .ppt("ppt")
                .video("video")
                .note("note")
                .homework("homework")
                .build();
        System.out.println(course);
    }
}

在这里插入图片描述

在源码中的应用

  • StringBuilder

  • Mybatis-Plus

  • Spring

https://www.bilibili.com/video/BV1nZ4y1i7tn?p=11

总结

优点

  • 封装性好,创建与使用分离
  • 扩展性好,建造类之间独立,一定程度上解耦

建造者和工厂模式的区别

  1. 工厂模式只需要把对象创建出来,而建造者模式需要注意创建需要哪些部件组成
  2. 建造者模式根据建造过程的不一样,最终的对象部件组成也不一样