플라이웨이트 패턴(flyweight pattern)이란?
정적인 저장소를 만들어 놓은 뒤에 여러 클래스에서 공용으로 사용할만한 것을 저장해놓고 갖다 쓰는 것을 플라이웨이트 패턴이라고 한다.
실생활에 비유하자면, 마트에서 여러가지 종류의 라면을 미리 사서 주방 찬장에 넣어놓으면 마트에 다녀올 필요가 없는 것과 비슷하다.
실제 사용 예로 자바의 스트링 풀이 있다.
@Test
public void flyWeightPattern() {
String s = "hello";
String s1 = new String("hello");
String s2 = "hello";
System.out.println("s == s1 ? " + (s == s1)); // true
System.out.println("s == s2 ? " + (s == s2)); // false
}
- 위 코드는 간단한 플라이 웨이트 패턴의 예이다.
- 각각
true
와false
가 나오게 된다.
- 각각
- 자바에서는
String a = "abc"
와 같은 형태로 문자열을 선언하면,JVM
은 해당 문자열을 문자열 풀에 저장한다.- 다음에 같은 문자열을 선언하면, 새로 객체를 생성하는 것이 아닌 문자열 풀에서 가져오게 된다.
- 이처럼 정적인 저장소를 만들어 놓은 뒤에 여러 클래스에서 공용으로 사용할만한 것을 저장해놓고 갖다 쓰는 것을 플라이웨이트 패턴이라고 한다.
반응형
'Java > 자바 디자인 패턴' 카테고리의 다른 글
추상 팩토리 패턴 (Abstract Factory Pattern) 이란? (0) | 2023.01.24 |
---|---|
팩토리 메서드 패턴 (Factory Method Pattern) 이란? (0) | 2023.01.23 |
싱글톤 패턴 (Singleton Pattern) 이란? (0) | 2023.01.20 |
자바 믹스인(mixins)이란? (0) | 2021.12.30 |
제네릭 싱글턴 팩토리 (0) | 2021.12.24 |