[Spring의 디자인 패턴] 2. 팩토리 메서드 패턴

namkun·2023년 6월 8일
0

T-I-L

목록 보기
15/20

팩토리 메서드 패턴

팩토리 메서드 패턴은 객체 생성을 팩토리 클래스로 캡슐화 처리해서 대신 생성하게 하는 생성 디자인 패턴이다.

클라이언트가 직접 new 연산자를 통해 제품 객체를 생성하는게 아니라, 하위 클래스에서 어떤 객체를 생성할지 결정하도록 위임한다고 생각하면 된다.

즉, 오버라이드된 메서드가 객체를 반환한다.

객체를 생성하기 위해 Java interface 또는 abstract class 같은 인터페이스를 제공하여 인터페이스의 펙토리 메소드는 하나 이상의 서브클래스에 대한 오브젝트의 생성을 연기시킨다. 서브클래스는 어떤 객체가 만들어질지에 대해 선택하기 위해 팩토리를 implement하여야 한다.

해당 패턴은 템플릿 메서드 패턴을 활용한다.

템플릿 메서드 패턴?

  • 상속을 통해서 부모 클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법
  • 변하지 않는 기능은 부모 클래스에, 자주 변경되며 확장될 기능은 자식 클래스에 생성한다.
  • 부모 클래스에는 기본적인 로직 및 그 로직의 일부를 추상 메서드나 오버라이딩이 가능한 메서드등으로 만든다.
  • 자식 클래스에는 부모 클래스에서 만든 그 메서드를 필요에 맞게 구현한다.

스프링에서의 팩토리 메서드 패턴

Bean Factory

빈을 생성하고 관리하는 팩토리로, 컨테이너가 구동될 때 Bean을 생성하는 것이 아니라 요청에 의해 Bean이 사용되는 시점에 생성되는 lazy loading 방식을 사용한다.

Application Context

Bean을 주입받기 위해서 applicationContext 객체에 getBean() 팩토리 메서드를 사용할 수 있다.
(applicationContext가 BeanFactory를 상속받기 때문)

이때 applicationContext 객체가 팩토리 역할을 한다.

profile
개발하는 중국학과 사람

0개의 댓글