ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 추상 팩토리 (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과 그 구현체

     

     

     

    참고


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

Designed by Tistory.