팩토리 패턴이란?
펙토리 메서드 패턴과 추상 팩토리 패턴 두가지로 구분할 수 있으며, 모두 객체 생성을 위한 디자인 패턴이다.
간단하게 이 둘의 차이를 보자.
- 팩토리 메소드 패턴
- 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만든다.
- 즉 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것.
- https://hyokeun0419.tistory.com/101 (해당 포스팅을 참고하자.)
- 추상 팩토리 패턴
- 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성.
추상 팩토리 패턴이란?
- 서로 관련있는 여러 객체를 만들어주는 인터페이스
- 구체적으로 어떤 클래스의 인스턴스를 사용하는지 감출 수 있다.
- 즉, 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고, 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴
- 클라이언트에서 특정 객체을 사용할때 팩토리 클래스만들 참조하여 특정 객체에 대한 구현부를 감추어 역할과 구현을 분리시킬 수 있다.
추상 팩토리 (Abstract factory) 패턴 구현 방법
클라이언트 코드에서 구체적인 클래스의 의존성을 제거한다.
추상 팩토리 (Abstract factory) 패턴 복습 팩토리 메소드 패턴과 굉장히 흡사한데 무엇이 다른건가.
- 모양과 효과는 비슷하지만...
- 둘 다 구체적인 객체 생성 과정을 추상화한 인터페이스를 제공한다.
- 관점이 다르다.
- 팩토리 메소드 패턴은 “팩토리를 구현하는 방법 (inheritance)”에 초점을 둔다.
- 추상 팩토리 패턴은 “팩토리를 사용하는 방법 (composition)”에 초점을 둔다.
- 목적이 조금 다르다.
- 팩토리 메소드 패턴은 구체적인 객체 생성 과정을 하위 또는 구체적인 클래스로 옮기는 것이 목적.
- 추상 팩토리 패턴은 관련있는 여러 객체를 구체적인 클래스에 의존하지 않고 만들 수 있게 해주는 것이 목적.
추상 팩토리 (Abstract factory) 패턴 실무에서는 어떻게 쓰이나?
- 자바 라이브러리
- javax.xml.xpath.XPathFactory#newInstance()
- javax.xml.transform.TransformerFactory#newInstance()
- javax.xml.parsers.DocumentBuilderFactory#newInstance()
- 스프링
- FactoryBean과 그 구현체
참고
백기선 - 디자인 패턴 강의 (인프런)
'디자인 패턴' 카테고리의 다른 글
어댑터 패턴 (Adapter Pattern) (0) | 2022.07.05 |
---|---|
프로토타입 (Prototype) 패턴 (0) | 2022.06.29 |
팩토리 메소드 패턴 (Factory Method Pattern) (0) | 2022.06.14 |
싱글톤 패턴 (Singleton Pattern) (0) | 2022.06.04 |
프록시(proxy) 패턴 (0) | 2022.05.03 |