Update 设计模式 - 生成器.md

在“实现”小节补充 StringBuilder 实现说明与多参数类 Builder 实践,并对参考文献进行文字校对。
This commit is contained in:
CyC2018
2026-10-30 20:19:44 +08:00
parent 05db346f5c
commit cd7926431a
+4 -2
View File
@@ -7,7 +7,7 @@
<div align="center"> <img src="pics/dp-builder.png" width="760px"/> </div><br>
### 实现
以下是一个简易的 StringBuilder 实现,参考了 JDK 1.8 源码。
以下是一个简易的 StringBuilder 实现,参考了 JDK 1.8 源码(JDK 9 起 value 改为 byte[],扩容仍是原容量 × 2 + 2)。每次 append() 是一个构造步骤,返回 this 以便链式调用,最后由 toString() 得到最终的 String。
```java
import java.util.Arrays;
@@ -79,6 +79,8 @@ public class Client {
abcdefghijklmnopqrstuvwxyz
```
实际开发中更常见的是为参数很多的类提供生成器,例如 new User.Builder("tom").age(18).email("tom@example.com").build():比一串重载的构造方法更易读,可选参数按需设置,并且可以在 build() 中统一校验,再创建不可变的对象。
### JDK 中的应用
- [java.lang.StringBuilder](http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html)
- [java.nio.ByteBuffer](http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html#put-byte-)
@@ -89,4 +91,4 @@ abcdefghijklmnopqrstuvwxyz
## 参考资料
- 弗里曼. Head First 设计模式 [M]. 中国电力出版社, 2007.
- Gamma E. 设计模式: 可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.
- Gamma E. 设计模式:可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.