디자인 패턴

추상 팩토리 (Abstract factory) 패턴

개발정리 2022. 6. 19. 17:30

팩토리 패턴이란?


펙토리 메서드 패턴과 추상 팩토리 패턴 두가지로 구분할 수 있으며, 모두 객체 생성을 위한 디자인 패턴이다.

간단하게 이 둘의 차이를 보자.

  • 팩토리 메소드 패턴  
    • 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만든다.
    • 즉 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것.
    • 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과 그 구현체

 

 

 

참고


백기선 - 디자인 패턴 강의 (인프런)