1. 程式人生 > >設計模式之構造器模式(Builder)

設計模式之構造器模式(Builder)

本文介紹Java中23個設計模式中的構造器模式。

一 概念
Java 23種設計模式之一,英文叫Builder Pattern。其核心思想是將一個“複雜物件的構建演算法”與它的“部件及組裝方式”分離,使得構件演算法和組裝方式可以獨立應對變化;複用同樣的構建演算法可以建立不同的表示,不同的構建過程可以複用相同的部件組裝方式。

二 作用
為了將複雜物件的構建過程與它的部件分離。注意: 是解耦過程和部件。建立者模式隱藏了複雜物件的建立過程,它把複雜物件的建立過程加以抽象,通過子類繼承或者過載的方式,動態的建立具有複合屬性的物件。

三 要點
在建立者模式中,客戶端不再負責物件的建立與組裝,而是把這個物件建立的責任交給其具體的建立者類,把組裝的責任交給組裝類,客戶端只負責物件的呼叫,從而明確了各個類的職責。
雖然利用建立者模式可以創建出不同型別的產品,但是如果產品之間的差異巨大,則需要編寫多個建立者類才能實現,如果這是結合工廠模式更好。

四、類圖

這裡寫圖片描述
五、實現

class Product {
    private String title;
    private double price;

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice
(double price) { this.price = price; } public String toString() { return "title=" + title + ", price=" + price; } } class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } public void construct() { builder.buildPartA(); builder.buildPartB(); } } interface
Builder { void buildPartA(); void buildPartB(); Product getResult(); } class BuilderA implements Builder { private Product productA; public BuilderA(Product productA) { this.productA = productA; } public void buildPartA() { this.productA.setTitle("設計模式"); } public void buildPartB() { this.productA.setPrice(28.8); } public Product getResult() { return productA; } } public class TestBuilder { public static void main(String[] args) { BuilderA builderA = new BuilderA(new Product()); Director director = new Director(builderA); director.construct(); System.out.println(builderA.getResult()); } }

六、JDK中構造器模式類

  • java.lang.stringbuilder#append()
  • java.lang.stringbuffer#append()
  • java.sql.preparedstatement
  • javax.swing.grouplayout.group#addcomponent()