강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ningning님의 프로필 이미지
ningning

작성한 질문수

코딩으로 학습하는 GoF의 디자인 패턴

플라이웨이트 패턴 4부 - 자바와 스프링에서 찾아보는 패턴

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

작성

·

298

2

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

퀴즈

어댑터 패턴은 주로 어떤 문제를 해결하기 위해 사용될까요?

다른 클래스 계층 구조를 분리하는 문제

기존 코드 변경 없이 기능 추가하는 문제

수많은 객체 인스턴스로 인한 메모리 문제

서로 다른 인터페이스를 가진 클래스 호환 문제

답변 2

4

백기선님의 프로필 이미지
백기선
지식공유자

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

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

2

ningning님의 프로필 이미지
ningning
질문자

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

감사합니다.

ningning님의 프로필 이미지
ningning

작성한 질문수

질문하기