建造者模式的实现,代码里为什么必须用static

这我正在学习建造者模式,请问这里为什么必须用static?

img

img


public class ImpoveSource {
    //课程名字
    private String courseName;
    //课程ppt
    private String coursePPT;
    //课程视频
    private String courseVideo;
    //课程标题
    private String courseTitle;
    //课程的问题和答案
    private String courseQA;

    @Override
    public String toString() {
        return "ImpoveSource{" +
                "courseName='" + courseName + '\'' +
                ", coursePPT='" + coursePPT + '\'' +
                ", courseVideo='" + courseVideo + '\'' +
                ", courseTitle='" + courseTitle + '\'' +
                ", courseQA='" + courseQA + '\'' +
                '}';
    }

    public ImpoveSource(ImproveCourseBuilder improveCourseBuilder){
        this.courseName = improveCourseBuilder.courseName;
        this.coursePPT = improveCourseBuilder.coursePPT;
        this.courseVideo = improveCourseBuilder.courseVideo;
        this.courseTitle = improveCourseBuilder.courseArticle;
        this.courseQA = improveCourseBuilder.courseQA;
    }


    //开始构造
    public static class ImproveCourseBuilder{

        private String courseName;
        private String coursePPT;
        private String courseVideo;
        private String courseArticle;
        private String courseQA;

        public ImproveCourseBuilder buildCourseName(String courseName){
            this.courseName = courseName;
            return this;
        }

        public ImproveCourseBuilder buildCoursePPT(String coursePPT){
            this.coursePPT = coursePPT;
            return this;
        }

        public ImproveCourseBuilder buildCourseVideo(String courseVideo){
            this.courseVideo = courseVideo;
            return this;
        }

        public ImproveCourseBuilder buildCourseArticle(String courseArticle){
            this.courseArticle = courseArticle;
            return this;
        }

        public ImproveCourseBuilder buildCourseQA(String courseQA){
            this.courseQA = courseQA;
            return this;
        }

        //构建器
        public ImpoveSource build(){
            return new ImpoveSource(this);
        }
    }
}
public class ImproveSourceTes {
    public static void main(String[] args) {
        ImpoveSource build = new ImpoveSource.ImproveCourseBuilder()
                .buildCourseName("java")
                .buildCourseArticle("springboot入门到入土")
                .buildCoursePPT("springboot入门到入土PPT")
                .buildCourseVideo("springboot入门到入土视频")
                .buildCourseQA("springboot入门到入土问题答疑")
                .build();
        System.out.println(build);
    }
}

只有 builder 配置 static , 在外面 才可以使用 ImpoveSource.建造者类
如果不是static,在外面,需要 (new ImpoveSource()).建造者类