享元模式模式 源码举例

This commit is contained in:
2018-10-14 16:47:11 +08:00
parent 96a94fc332
commit 6ba2796789
3 changed files with 23 additions and 0 deletions

View File

@@ -115,6 +115,11 @@
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.32</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
</dependencies>

View File

@@ -2,6 +2,9 @@ package top.fjy8018.designpattern.pattern.structural.flyweight;
/**
* 享元模式:利用共享的方式来支持大量细粒度的对象,这些对象一部分内部状态是相同的。
* JDK源码{@link Integer#valueOf(int)} {@link Integer.IntegerCache}
* 其他类型同理 {@link Long#valueOf(long)} {@link Boolean#valueOf(boolean)} {@link Byte#valueOf(byte)} {@link Character#valueOf(char)}
* Apache源码连接池{@link org.apache.commons.pool2.impl.GenericObjectPool#returnObject(Object)},连接池配置 {@link org.apache.commons.pool2.impl.GenericObjectPoolConfig}
*
* @author F嘉阳
* @date 2018-10-14 16:13

View File

@@ -1,7 +1,9 @@
package top.fjy8018.designpattern.pattern.structural.flyweight;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
@Slf4j
class EmployeeTest {
private static final String departments[] = {"RD", "QA", "PM", "BD"};
@@ -14,4 +16,17 @@ class EmployeeTest {
employee.report();
}
}
@Test
void integerTest() {
Integer a = new Integer(88);
int c = 88;
Integer d = new Integer(88);
Integer e = Integer.valueOf(88);
Integer f = 88;
log.info("a==c? {}", a == c);
log.info("a==d? {}", a == d);
log.info("a==e? {}", a == e);
log.info("e==f? {}", e == f);
}
}