Flyweight Pattern

This commit is contained in:
kim
2021-01-19 22:56:03 +09:00
parent af9458d9de
commit 08f341f7b2
4 changed files with 61 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
package Flyweight;
public class Application {
public static void main(String[] args) {
FlyweightFactory factory = new FlyweightFactory();
Flyweight flyweight = factory.getFlyweight("A");
System.out.println(flyweight);
flyweight = factory.getFlyweight("A");
System.out.println(flyweight);
flyweight = factory.getFlyweight("A");
System.out.println(flyweight);
flyweight = factory.getFlyweight("B");
System.out.println(flyweight);
flyweight = factory.getFlyweight("B");
System.out.println(flyweight);
}
}

View File

@@ -0,0 +1,2 @@
Flyweight Pattern
- 메모리 절약하기

View File

@@ -0,0 +1,14 @@
package Flyweight;
public class Flyweight {
private String data;
public Flyweight(String data) {
this.data = data;
}
public String getData() {
return data;
}
}

View File

@@ -0,0 +1,26 @@
package Flyweight;
import java.util.Map;
import java.util.TreeMap;
public class FlyweightFactory {
Map<String, Flyweight> pool;
public FlyweightFactory() {
pool = new TreeMap<>();
}
public Flyweight getFlyweight(String key) {
Flyweight flyweight = pool.get(key);
if(flyweight == null) {
flyweight = new Flyweight(key);
pool.put(key, flyweight);
System.out.println("새로생성 : " + key);
} else {
System.out.println("재사용 : " + key);
}
return flyweight;
}
}