[java] 플라이웨이트 패턴
플라이웨이트 패턴은 객체를 공유하여 메모리를 절약하는 디자인 패턴 중 하나입니다. 객체를 재사용하고, 그에 따른 메모리 절약 효과를 얻을 수 있습니다.
왜 플라이웨이트 패턴을 사용해야 하는가?
플라이웨이트 패턴은 많은 수의 유사한 객체가 생성되는 상황에서 유용합니다. 특히, 객체를 공유하고 변경 불가능하게 만들기 때문에 메모리를 절약할 수 있습니다. 이 패턴은 중복되는 객체 생성을 피하고 캐시를 이용하여 성능을 향상시킬 수 있습니다.
예제
import java.util.HashMap;
public class 플라이웨이트공장 {
private static final HashMap<String, 플라이웨이트> 플라이웨이트맵 = new HashMap<>();
public static 플라이웨이트 get플라이웨이트(String 종류) {
플라이웨이트 플라이웨이트 = 플라이웨이트맵.get(종류);
if (플라이웨이트 == null) {
switch (종류) {
case "고양이":
플라이웨이트 = new 고양이();
break;
case "강아지":
플라이웨이트 = new 강아지();
break;
default:
throw new IllegalArgumentException("올바른 종류가 아닙니다.");
}
플라이웨이트맵.put(종류, 플라이웨이트);
}
return 플라이웨이트;
}
}
위 예제는 고양이와 강아지 객체를 관리하는 플라이웨이트 공장을 보여줍니다. 이 공장은 요청된 객체 종류에 따라 이미 생성된 객체를 반환하거나 새로운 객체를 생성하여 반환합니다.
정리
플라이웨이트 패턴은 객체를 재사용하여 메모리를 절약하고 성능을 향상시킬 수 있는 매우 유용한 패턴입니다. 주로 비슷한 속성을 가진 객체들을 다룰 때 효과적으로 사용될 수 있습니다.
더 많은 정보를 원하시거나 예제 코드를 더 보고 싶으시다면, 아래의 참고자료를 참고해 주세요.
참고 자료: