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

mcm1092님의 프로필 이미지
mcm1092

작성한 질문수

이펙티브 자바 완벽 공략 1부

아이템 5. 완벽 공략 14 - 팩터리 메서드 패턴

굳이 팩토리 메소드 패턴을 쓰는 이유가 뭔가요??

작성

·

674

0

우선 추천해주신대로 디자인패턴 강의를 아직 수강하지는 않았습니다. (수강 예정입니다!)

이 강의에서 팩토리 메소드 패턴을 보여주셨습니다.

물론 책에서 "팩토리 메소드 방식도 적용할 수 있다"라는 문구때문에 예시를 들어주신 것 같긴한데, 이 강의에서 보여주신 예제만 보면 SpellChecker 클래스의 클라이언트가 Dictionary 인터페이스의 구현체만 주입해줘도 충분할 것 같습니다.
그런데 굳이 팩토리를 주입받고 그 팩토리로부터 Dictionary 구현체를 반환받아 자신의 Dictionary 타입의 필드에 할당하는게 조금 와닿지가 않습니다. 최대한 단순하게 예시를 들어주신거라고 이해하고는 있습니다만 궁금해서 질문드립니다.

추가) 강의 끝 부분에 객체를 생성하는 과정이 복잡할 때 사용한다고 하셨는데, 클라이언트에게 복잡한 객체를 생성하는 일을 시키지 않기 위해서...사용하는 것일수도 있겠네요.(자문자답일까요..)

답변 1

4

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

그러게요. 저도 Dictionay 인터페이스만 써도 충분한 경우라고 생각합니다. 다만 책에서는 해당 아이템이 "팩토리"가 주제이다 보니, 관련 디자인 패턴을 언급했고 그래서 굳이 예제를 보여드린것 뿐이죠.

그리고 각 디자인 패턴마다 해결하려는 문제가 있는데 팩토리 메소드 패턴은 말씀하신대로 복잡한 객체를 생성하는 로직을 서브클래스에  두고 클라이언트는 인터페이스를 통해서 객체를 쓰게 하는 패턴인데요. 그런식으로 구성하면 추후에 해당 타입의 새로운 객체나 새로운 팩토리가 생겨도 클라이언트 코드를 그대로 유지할 수 있다는 장점이 있습니다. (자문자답하신게 맞습니다.)

감사합니다.

mcm1092님의 프로필 이미지
mcm1092

작성한 질문수

질문하기