본문 바로가기

프로그래밍 강의 메모/코딩으로 학습하는 GoF의 디자인 패턴_백기선

객체 생성과 관련 디자인 패턴 > 팩토리 메서드 패턴(Factory Method Pattern)

https://inf.run/6Shr

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com

 

 

팩토리 메서드 패턴

  • 객체 생성 관련 디자인 패턴.
  • 다양한 구현체가 있고, 그 중에서 특정한 구현체를 만들 수 있는 다양한 팩토리를 제공할 수 있는 패턴이다.
  • 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다.

 

어떤 인스턴스를 생성하려는 책임을, 

구체적인 클래스가 아니라,

추상적인 인터페이스의 메서드로 감싸기 위한 패턴이다.

 

팩토리 역할을 할 Creator 인터페이스를 만들고,

이 인터페이스를 실체화한 ConcreteCreator에서, 

추상 메서드를 구체화한다.

이 메서드를 통해 구체적인 인스턴스가 생성된다.

 

이에 대응하는, 팩토리에서 만드는 오브젝트를 추상화한, 인터페이스인 Product를, 정의하고,

이를 실체화한 ConcreateProduct를 ConcreteProduct에서 만들도록 구성한다.

Creator 인터페이스가 Product 인터페이스를 의존하도록 한다.

 

 

 

 

확장에 열려있고 변경에 닫혀있는 객체 지향 원칙

기존 코드를 변경하지 않으면서 새로운 기능을 확장할 수 있는 구조로 만드는 객체 지향 원칙이다.
팩토리 메서드 패턴에서 이러한 구조를 만들어냈다.

 

 

팩토리 메서드 패턴을 적용했을 때 장단점

확장에 열려있고 변경에 닫혀있는 객체 지향 원칙을 만족하여, 

인스턴스를 생성하는 로직이 담겨있는 기존 코드를 건드리지 않고 같은 종류의 새로운 인스턴스를 다른 방법으로 확장이 가능하다.

이런 방법이 가능한 이유는 Product와 Creator 간의 커플링을 느슨하게 가져갔기 때문이다.

 

팩토리 메서드 패턴을 적용했을 때 단점은 클래스가 늘어나는 것이다.

 

 

 

 

 

 

https://refactoring.guru/ko/design-patterns/factory-method

 

Factory Method

/ Design Patterns / Creational Patterns Factory Method Also known as: Virtual Constructor Intent Factory Method is a creational design pattern that provides an interface for creating objects in a superclass, but allows subclasses to alter the type of objec

refactoring.guru