建造者模式实战

2020-06-16  本文已影响0人  奋斗的韭菜汪

适用场景:适用于创建对象需要很多步骤,但是步骤的顺序不一定固定。如果一个对象有非常复杂的内部结构(很多属性),把复杂对象的创建和使用分离

public abstract class AbstractCourseBuilder {
    public abstract AbstractCourseBuilder baseCourseBuilder(String name, String video, String ppt);
    public abstract AbstractCourseBuilder specialCourseBuilder(String name);
    public abstract Course builder();

}
public class CourseBuilder extends AbstractCourseBuilder {
    Course course = new Course();
    @Override
    public CourseBuilder baseCourseBuilder(String name, String video, String ppt) {
        course.setName(name);
        course.setVideo(video);
        course.setPpt(ppt);
        return this;
    }
    @Override
    public CourseBuilder specialCourseBuilder(String name) {
        course.setName(name);
        return this;
    }
    @Override
    public Course builder() {
        return course;
    }
}

public class Course {
    private String ppt;
    private String name;
    private String video;

    public String getPpt() {
        return ppt;
    }
    public void setPpt(String ppt) {
        this.ppt = ppt;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getVideo() {
        return video;
    }
    public void setVideo(String video) {
        this.video = video;
    }
    @Override
    public String toString() {
        return "Course{" +
                "ppt='" + ppt + '\'' +
                ", name='" + name + '\'' +
                ", video='" + video + '\'' +
                '}';
    }
}
public class BuilderTest {
    public static void main(String[] args) {
        AbstractCourseBuilder builder = new CourseBuilder()
                .baseCourseBuilder("Zhangsan", "111", "222")
                .specialCourseBuilder("lisi");
        System.out.println(builder.builder());

    }
}
上一篇 下一篇

猜你喜欢

热点阅读