추상 팩토리 패턴

추상 팩토리 패턴 정의

구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생산하는 인터페이스를 제공한다. 구상 클래스는 서브 클래스에서 만든다.

추상 팩토리 패턴 구조

img.png

추상 팩토리 패턴 예제 코드 - 1

img_1.png

만약 새로운 리눅스 제품군이 추가되어야 한다면 리눅스에 맞는 제품들과 팩토리 클래스만 추가해주면 된다. 클라이언트 코드는 변경할 필요가 없다.

추상 팩토리 패턴 예제 코드 - 2

img_2.png

추상 팩토리 패턴 장단점

추상 팩토리 장점

  • 객체를 생성하는 코드를 분리하여 클라이언트 코드와 결합도를 낮출 수 있다.

  • 팩토리에서 생성되는 제품들의 상호 호한을 보장할 수 있다.

  • 제품 생성 코드를 한 곳으로 캡슐화하여 유지보수에 용이한 코드를 만들 수 있다.(SRP 준수)

  • 기존 클라이언트 코드를 변경하지 않고 새로운 제품군을 확장할 수 있다.(OCP 준수)

추상 팩토리 단점

  • 각 제품마다 팩토리 객체들을 모두 구현해주어야 하기 때문에 클래스가 증가하여 코드가 복잡해질 수 있다.

  • 추상 팩토리의 세부사항이 변경되면 모든 팩토리 브 클래스에 대한 수정이 필요하다.

  • 새로운 종류의 제품 확장이 어렵다. 기존 팩토리에 새로운 제품을 추가하면 모든 팩토리 클래스에 메서드를 추가해야 한다.

실전에서 사용되는 추상 팩토리 패턴

  • javax.xml.parsers.DocumentBuilderFactory.newInstance()

  • javax.xml.transform.TransformerFactory.newInstance()

  • javax.xml.xpath.XPathFactory.newInstance()


참고

Last updated