• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    미해결

안녕하세요 기선님 enum 이야기가 잠깐 나와서 질문해요

22.02.07 18:00 작성 조회수 187

2

안녕하세요 기선님
 
플라이웨이트 패턴 1부 내용에서..
"객체의 구성요소, 동일한 값을 가지는 객체에 대해서 매번 새로운 인스턴스를 생성하면 그건 낭비다."
 
그래서 플라이웨이트 패턴을 구성해 기존에 생성된 인스턴스를 캐싱하여 반환한다고 하셨는데요.
 
Q. A 객체에 a-1 객체를 멤버로 갖는 구조라면.
a-1 객체를 enum class로 만들어 단일 인스턴스를 보장하고 메모리 낭비를 줄이는것도 플라이웨이트 패턴을 만족하는 하나의 방법이 될 수 있다고 보면 될까요?
 
감사합니다.

답변 2

·

답변을 작성해보세요.

4

a-1 필드를 enum으로 정의하는 이유가 단일 객체를 쓰기 위함이라면 싱글톤 패턴에 가깝다고 보입니다. 목적이 A가 자주 사용하는 a-1을 캐싱하는 거라면, (그런데 오로지 하나 뿐이라면 굳이 캐싱이 아니라 역시 싱글톤으로 보이네요.) 아주 넓은 의미의 플라이웨이트 패턴이라고 볼 수도 있겠지만.. 그래도 뭔가 단일 객체를 "캐싱"한다는 개념보다는 "싱글톤"이 어울리네요.

예제에서도 보여드린것처럼, 뭔가 자주 사용되는 인스턴스들을 매번 새로 만드는게 아니라 재사용하는 패턴이라고 보시면 좋겠습니다. 

2

ningning님의 프로필

ningning

질문자

2022.02.10

해당 패턴을 사용하는 목적이, 그리고 목적에 알맞는 패턴을 이용하는게 중요하다는 말씀이시네요.

감사합니다.