[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 플라이웨이트;
    }
}

위 예제는 고양이와 강아지 객체를 관리하는 플라이웨이트 공장을 보여줍니다. 이 공장은 요청된 객체 종류에 따라 이미 생성된 객체를 반환하거나 새로운 객체를 생성하여 반환합니다.

정리

플라이웨이트 패턴은 객체를 재사용하여 메모리를 절약하고 성능을 향상시킬 수 있는 매우 유용한 패턴입니다. 주로 비슷한 속성을 가진 객체들을 다룰 때 효과적으로 사용될 수 있습니다.

더 많은 정보를 원하시거나 예제 코드를 더 보고 싶으시다면, 아래의 참고자료를 참고해 주세요.

참고 자료: