1. 程式人生 > 資訊 >Netflix 新動作:有意進軍虛擬現實和遊戲領域

Netflix 新動作:有意進軍虛擬現實和遊戲領域

https://img2020.cnblogs.com/blog/1480523/202008/1480523-20200827214505601-457188157.png
建造者模式

建造者模式是將一個複雜物件的構建過程與它的表示分離,使得同樣的構建過程可以建立不同的表示,屬於建立型模式。
建造者模式的設計中主要有四個角色:

  • 產品(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);
    }
}

歡迎大家留言,以便於後面的人更快解決問題!另外亦歡迎大家可以關注我的微信公眾號,方便利用零碎時間互相交流。共勉!
------願來生只做陌上的看花人,無須入塵緣,僅行於陌上,看一川風花,無愛無傷-----