
팩토리 메서드 패턴 정리
DesignPattern
2025.04.02.
팩토리 메소드 패턴
1. 패턴 소개
구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다.
- 다양한 구현체(Product)가 있고, 그중에서 특정한 구현체(creator)를 만들 수 있는 다양한 팩토리를 제공할 수 있다.
2. 패턴 적용하기, 3. 인터페이스 적용하기
확장에는 열려있고, 변경에는 닫혀있는 구조로 만들어본다.
- 클라이언트 코드는 바뀔 수 있지 않냐?
- 기존 product와 factory가 변경되지 않는다.
4. 장점과 단점
- 팩토리 메소드 패턴을 적용했을 때의 장점은? 단점은
- 장점
- 확장에 열려있고, 변경에 닫혀있는 코드를 작성 가능하다.
- 기존의 코드를 건들이지 않고, 새로운 인스턴스를 다른 방법으로 확장이 가능하다.
- 가능한 이유 -> product와 creator간에 느슨한 결합이 되어있기 때문이다.
- 단점
- 각자의 역할을 나누다 보니 클래스가 증가한다.
- 장점
- “확장에 열려있고 변경에 닫혀있는 객체 지향 원칙”(OCP)을 설명하세요.
- 변경에 닫혀있다. -> 기존 코드를 변경하지 않으면서 새로운 기능을 확장할 수 있다.
- 자바 8에 추가된 default 메소드에 대해 설명하세요.
- 인터페이스에서 기본적인 구현체를 만들 수 있다. (이전에는 추상 메서드만 만들 수 있었다.)
- 자바 9에서는 private 메서드를 정의할 수 있다.
5. 자바와 스프링에서 찾아보는 패턴
- 단순한 팩토리 패턴
- 매개변수의 값에 따라 또는 메소드에 따라 각기 다른 인스턴스를 리턴하는 단순한 버전의 팩토리 메서드 패턴
- ex - java.lang.Calendar 또는 java.lang.NumberFormat
- 스프링의 BeanFactory
- Object타입의 Product를 만드는 BeanFactory라는 Creator