본문 바로가기
CS

[Design Pattern]팩토리 메서드 패턴

by 차가운개발 2024. 11. 26.

 

 

객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정한다. 

즉 클래스의 인스턴스를 만드는 일을 서브클래스에 맡기는 것

 

ㅇ 개념

  • 상위 클래스에서 객체 생성의 인터페이스 정의
    상위 클래스는 객체를 생성하는 팩토리 메서드를 선언하지만, 구체적인 구현은 제공하지 않는다.
  • 객체 생성 로직의 캡슐화
    클라이언트는 객체 생성 방식을 알 필요 없이 팩토리 메서드를 호출해 객체를 생성한다.
    객체 생성 로직이 변경되어도 클라이언트의 코드에 영향을 받지 않는다.
  • 개방 폐쇄 원칙 준수
    새로운 객체 유형을 추가할 때 기존 클래스를 수정하지 않고 새로운 하위 클래스를 추가하여 확장할 수 있다.

 

ㅇ 장단점

장점

  • 개방-폐쇄 원칙 준수
    새로운 객체 타입을 추가하려면 기존 코드를 수정하지 않고 하위 클래스를 추가하면 된다.
  • 유연한 객체 생성
    객체 생성 로직을 상위 클래스와 분리하여 클라이언트 코드가 구체적인 클래스와 독립적으로 동작할 수 있다.
  • 코드 재사용성
    공통 로직은 상위 클래스에서 정의하고 객체 생성 부분만 하위 클래스에서 구현하므로 코드 중복을 줄일 수 있다.
  • 결합도 감소
    클라이언트는 팩토리 메서드를 통해 객체를 생성하므로 생성 방식이나 구체적인 클래스에 의존하지 않는다.

단점

  • 클래스 수 증가
    새로운 객체 유형을 추가할 때 마다 팩토리 클래스도 함께 추가해야 하므로 클래스의 수가 늘어나 복잡해질 수 있다.
  • 구현 복잡성 증가
    단순한 객체 생성에는 오히려 불필요한 구조를 도입하게 될 수도 있다.