美文网首页
设计模式-建造者模式

设计模式-建造者模式

作者: 东方欲晓_莫道君行早 | 来源:发表于2021-07-13 16:37 被阅读0次
    建造者模式

    建造者模式是将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示,属于创建型模式。
    建造者模式的设计中主要有四个角色:

    • 产品(Product):要创建的产品类对象;
    • 建造者抽象(Builder):建造者的抽象类,规范产品对象的各个组成部分的建造,一般由子类实现具体的建造过程;
    • 建造者(ConcreteBuilder):具体的Builder类,根据不同的业务逻辑,具体化对象的各个组成部分的建造;
    • 调用者(Director):调用具体的建造者,来创建对象的各个部分,在指导者中不涉及具体产品的信息,支付保证对象各部分完整创建或按某种顺序创建。

    建造者模式的基本写法,以课程为例:
    首先需要创建一个需要构造的产品类:

    
    package com.jdwa.builder;
    
    import lombok.Data;
    
    @Data
    public class Course {
    
        private String name;
        private String ppt;
        private String video;
        private String note;
    
        private String homework;
    
        @Override
        public String toString() {
            return "Course{" +
                    "name='" + name + '\'' +
                    ", ppt='" + ppt + '\'' +
                    ", video='" + video + '\'' +
                    ", note='" + note + '\'' +
                    ", homework='" + homework + '\'' +
                    '}';
        }
    }
    
    

    具体的建造者:

    package com.jdwa.builder;
    
    public class CourseBuilder {
    
        private Course course = new Course();
    
        public void addName(String name){
            course.setName(name);
        }
    
        public void addPPT(String ppt){
            course.setPpt(ppt);
        }
    
        public void addVideo(String video){
            course.setVideo(video);
        }
    
        public void addNote(String note){
            course.setNote(note);
        }
    
        public void addHomework(String homework){
            course.setHomework(homework);
        }
    
        public Course build(){
            return course;
        }
    
    }
    
    

    调用者:

    package com.jdwa.builder;
    
    public class Director {
        public static void main(String[] args) {
            CourseBuilder builder = new CourseBuilder();
            builder.addNote("【课堂笔记】");
            builder.addName("【设计模式】");
            builder.addHomework("【课后作业】");
            builder.addPPT("【PPT课件】");
            builder.addVideo("【回放视频】");
    
            System.out.println(builder.build());
        }
    }
    
    

    建造者模式的链式写法:

    将建造者改造一下即可

    package com.jdwa.builder;
    
    /**
     * 可以先初始化一个或几个参数
     */
    public class CourseBuilder2 {
    
        private Course course;
    
        public CourseBuilder2(String name){
            course = new Course();
            course.setName(name);
        }
    
    
        public CourseBuilder2 addPPT(String ppt){
            course.setPpt(ppt);
            return this;
        }
    
        public CourseBuilder2 addVideo(String video){
            course.setVideo(video);
            return this;
        }
    
        public CourseBuilder2 addNote(String note){
            course.setNote(note);
            return this;
        }
    
        public CourseBuilder2 addHomework(String homework){
            course.setHomework(homework);
            return this;
        }
    
        public Course build(){
            return course;
        }
    
    }
    

    调用者如下:

    package com.jdwa.builder;
    
    public class Director {
        public static void main(String[] args) {
            Course course = new CourseBuilder2("【设计模式】")
                    .addNote("【课堂笔记】")
                    .addHomework("【课后作业】")
                    .addPPT("【PPT课件】")
                    .addVideo("【回放视频】")
                    .build();
            System.out.println(course);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:设计模式-建造者模式

          本文链接:https://www.haomeiwen.com/subject/ctnueltx.html