diff --git a/pom.xml b/pom.xml
index e68f9b7..2ddc0dd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,13 @@
1.3.2
+
+
+ com.google.guava
+ guava
+ 26.0-jre
+
+
org.springframework
spring-webmvc
diff --git a/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/chain/BuCourse.java b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/chain/BuCourse.java
index 6f59ad2..09d9b06 100644
--- a/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/chain/BuCourse.java
+++ b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/chain/BuCourse.java
@@ -1,9 +1,24 @@
package top.fjy8018.designpattern.pattern.creational.builder.chain;
+import com.google.common.collect.ImmutableSet;
+import org.apache.ibatis.builder.xml.XMLConfigBuilder;
+import org.apache.ibatis.parsing.XNode;
+
+import java.io.Reader;
+
/**
* 实体类
+ * 当只需要构建一个对象时,可以使用建造者,如果构建多个对象或者一类对象,则使用工厂方法或者抽象工厂
+ *
* 用静态内部类建造者,实现链式调用(推荐)
*
+ * JDK源码样例:{@link StringBuilder#append(int)} 和 {@link StringBuffer#append(int)} 区别在于后者对所有append方法加上同步关键字
+ * guava源码样例:不可变集合 {@link ImmutableSet.Builder#build()}
+ * Spring源码样例:{@link org.springframework.beans.factory.support.BeanDefinitionBuilder}
+ * mybatis源码样例:{@link org.apache.ibatis.session.SqlSessionFactoryBuilder#build(Reader)} 封装了读XML的操作
+ * 实际调用的是{@link XMLConfigBuilder#parseConfiguration(XNode)} 解析XML节点,将复杂的XML解析过程一次建造完成
+ *
+ *
* @author F嘉阳
* @date 2018-09-25 17:13
*/
diff --git a/src/test/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilderTest.java b/src/test/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilderTest.java
index ee522ca..202d96d 100644
--- a/src/test/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilderTest.java
+++ b/src/test/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilderTest.java
@@ -1,10 +1,11 @@
package top.fjy8018.designpattern.pattern.creational.builder;
+import com.google.common.collect.ImmutableSet;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import top.fjy8018.designpattern.pattern.creational.builder.chain.BuCourse;
-import static org.junit.jupiter.api.Assertions.*;
+import java.util.Set;
@Slf4j
class CourseBuilderTest {
@@ -26,4 +27,13 @@ class CourseBuilderTest {
.build();
log.info(course.toString());
}
+
+ /**
+ * 不可变集合源码测试
+ */
+ @Test
+ void ImmutableSetBuild() {
+ Set set = ImmutableSet.builder().add("f").add("j").add("y").build();
+ log.info(set.toString());
+ }
}
\ No newline at end of file