首页 > 编程笔记 > Java笔记

建造者模式实现链式赋值

以新宝库的辅导班为例,一个辅导班的课程由教程资料、学习笔记和课后作业组成,但是这些内容的设置顺序可以随意调整,我们用建造者模式来代入理解一下。

首先创建一个课程类 Course。
public class Course {
    private String name;    // 课程名称
    private String means;    // 教程资料
    private String note;   // 学习笔记
    private String homework;    // 课后作业

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMeans() {
        return means;
    }

    public void setMeans(String means) {
        this.means = means;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public String getHomework() {
        return homework;
    }

    public void setHomework(String homework) {
        this.homework = homework;
    }

    @Override
    public String toString() {
        return "CourseBuilder{" + "name='" + name + '\'' + ",means='" + means + '\'' + ",note='" + note + '\'' + ",homework='" + homework + '\'' + '}';
    }
}
然后创建建造者类 CourseBuilder,将复杂的过程封装起来,创建步骤由用户决定。
public class CourseBuilder {
    private Course course = new Course();
    public CourseBuilder addName(String name){
        course.setName(name);
        return this;
    }
    public CourseBuilder addMeans(String means){
        course.setMeans(means);
        return this;
    }
    public CourseBuilder addNote(String note){
        course.setNote(note);
        return this;
    }
    public CourseBuilder addHomework(String homework){
        course.setHomework(homework);
        return this;
    }
    public Course build(){
        return course;
    }
}
最后编写客户端测试代码。
public static void main(String[] args) {
    CourseBuilder builder = new CourseBuilder().addName("设计模式").addMeans("教程资料").addNote("课堂笔记").addHomework("课后作业");
    System.out.println(builder.build());
}
运行结果如下:

CourseBuilder{name='设计模式',means='教程资料',note='课堂笔记',homework='课后作业'}

这样的写法是不是很眼熟?后面分析建造者模式在框架源码中的应用时大家就会明白。

下面再来看一下类图的变化,如下图所示:

所有教程

优秀文章