介紹
建造者模式使用多個簡單的對象一步一步建構成一個複雜的對象。這種類型的設計模式屬于建立型模式,它提供了一種建立對象的最佳方式。
建造者(Builder Pattern)模式的定義:指将一個複雜對象的構造與它的表示分離,使同樣的建構過程可以建立不同的表示,這樣的設計模式被稱為建造者模式。它是将一個複雜的對象分解為多個簡單的對象,然後一步一步建構而成。它将變與不變相分離,即産品的組成部分是不變的,但每一部分是可以靈活選擇的。
架構應用
- java.lang.StringBuilder#append() (非線程安全)
- java.lang.StringBuffer#append() (線程安全)
-
java.nio.ByteBuffer#put()(還CharBuffer,ShortBuffer,IntBuffer,LongBuffer
FloatBuffer和DoubleBuffer)
- javax.swing.GroupLayout.Group#addComponent()
- 所有的實作 java.lang.Appendable
- BaseBuilder、XMLConfigBuilder(MyBatis)
模式的結構
建造者(Builder)模式的主要角色如下。
- 産品角色(Product):它是包含多個組成部件的複雜對象,由具體建造者來建立其各個滅部件。
- 抽象建造者(Builder):它是一個包含建立産品各個子部件的抽象方法的接口,通常還包含一個傳回複雜産品的方法 getResult()。
- 具體建造者(Concrete Builder):實作 Builder 接口,完成複雜産品的各個部件的具體建立方法。
- 指揮者(Director):它調用建造者對象中的部件構造與裝配方法完成複雜對象的建立,在指揮者中不涉及具體産品的資訊。
源碼
- java.lang.StringBuilder#append()
@Override
public StringBuilder append(boolean b) {
super.append(b);
return this;
}
- java.lang.StringBuffer#append()
@Override
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
- java.nio.ByteBuffer#put()
public final ByteBuffer put(byte[] src) {
return put(src, 0, src.length);
}
- ByteBuffer的簡單使用
package org.spring.pattern;
import java.nio.ByteBuffer;
/**
* @author yanyugang
* @description ByteBuffer的簡單使用: https://www.jianshu.com/p/80bd222fa971
* @date 2019/9/5 21:43
*/
public class BuilderPatternTest {
public static void main(String[] args) {
ByteBuffer buffer=ByteBuffer.allocate(1024);
// 寫入資料
buffer.put("Hello World ".getBytes());
buffer.put("Hello Java ".getBytes());
buffer.put("Good Morning ".getBytes());
System.out.println(buffer.toString());
byte[] array = buffer.array();
System.out.println(new String(array));
}
}
參考文檔
- 建造者模式(Bulider模式)詳解
推薦文檔:
- https://blog.csdn.net/u013256816/article/details/50978024