設計模式之構造器模式(Builder)
阿新 • • 發佈:2019-01-03
本文介紹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()