建造者模式在jdk+guava+spring+mybatis源码解析
This commit is contained in:
7
pom.xml
7
pom.xml
@@ -68,6 +68,13 @@
|
||||
<version>1.3.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>26.0-jre</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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<String> set = ImmutableSet.<String>builder().add("f").add("j").add("y").build();
|
||||
log.info(set.toString());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user