建造者模式

        將一個複雜對象的構建過程與它的表示分離, 使得一樣的構建過程能夠建立不一樣的表示,屬於建立型模式。設計模式

        特徵: 只需指定須要建造的類型就能夠得到對象, 建造過程及細節不須要了解。屬於建立型模式ide

        使用場景: 建立對象須要不少步驟, 可是步驟的順序不必定固定。若是一個對象有很是複雜的內部結構(不少屬性), 能夠將複雜對象的建立和使用進行分離。ui

@Data
public class Course {

    private String name;
    private String ppt;
    private String video;
    private String note;

    private String homework;

}
public class CourseBuilder {

    private Course course = new Course();

    public CourseBuilder addName(String name) {
        course.setName(name);
        return this;
    }

    public CourseBuilder addPPT(String ppt) {
        course.setPpt(ppt);
        return this;
    }

    public CourseBuilder addVideo(String video) {
        course.setVideo(video);
        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();

    builder.addName("設計模式").addPPT("PPT課件】")
    .addVideo("【回放視頻】").addNote("【課堂筆記】").addHomework("【課後做業】");

    System.out.println(builder.build());
}
 
    應用: JDK中的StringBuilder, Mybatis中的CacheBuilder、SqlSessionFactoryBuilder,Spring中的BeanDefinitionBuilder。
    優勢
          封裝性好,建立和使用分離
          擴展性好,建造類之間獨立、必定程度上解耦
      缺點
            產生多餘的Builder對象
            產品內部發生變化, 建造者都要修改,不符合開閉原則
建造者模式和工廠模式的區別
    
  建造者模式 工廠模式
  建造者模式更加註重方法的調用順序 工廠模式注重於建立對象
建立對象的力度不一樣 建造者模式建立複雜的對象,由各類複雜的部件組成 工廠模式建立出來的都同樣
關注點 不只要建立出這個對象,還要知道這個對象由那些部件組成 只須要把對象建立出來就能夠了
  建造者模式根據建造過程當中的順序不同,最終的對象部件組成也不同
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息