본문 바로가기
디자인 패턴

팩토리 메소드 패턴 (Factory Method Pattern)

by 개미는뚠뚠딴 2022. 3. 6.
반응형

오늘은 팩토리 메소드 패턴(Factory Method Pattern) 에 대해서 글을 쓰고자 한다.

요즘 Spring 프레임워크를 공부하고 있는데 내가 요즘 듣는 강의와 책에서 공통적으로 해당 패턴을 설명하기에 내 나름대로 정리하고자 한다.


정의

팩토리 메소드 패턴 은 간단하게 설명하자면 객체의 생성 부분을 별도의 클래스로 분리해 캡슐화 시키는 것이다.

상위 클래스에 하위 클래스를 생성하는 부분을 감출수 있고 어떤 객체를 생성할 것인지 하위 클래스가 결정할 수도 있다.

 

장점

  • 팩토리 메소드 패턴을 통해 객체를 생성하는 코드의 중복을 피할 수 있다.
  • 객체의 생성 로직과 사용하는 로직을 분리해 코드 결합도와 의존성을 낮추고 객체 생성에 대한 책임을 서브클래스에 위임할 수 있다.

 

예제

UML Class Diagram

Car 객체를 생성하는 CarCreator 와 factory

  • Creator : 팩토리 메서드를 가지고 있는 interface 
  • CarCreator : Creator 인터페이스의 구현체로 factory 메서드의 세부 구현과 factory 메서드가 Car 객체 반환
  • Car : 반환된 Car 객체

 

Careator interface
Create interface 의 구현체이자 Car 객체를 생성하는 팩토리
Car 객체
test code
test code 통과

 

아주 간단하게 자바로 코드를 짜봤다. 

소스 코드는 깃에 올려두었다.

https://github.com/HyeYeonCha/FactoryMethodPattern

 

GitHub: Where the world builds software

GitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

해당 코드는 인터페이스 상속을 이용한 팩토리 클래스의 추상화 예제로 굳이 인터페이스를 사용할 필요는 없다. 

대신 인터페이스를 사용하면 비슷한 객체 생성 클래스를 만들 때 편리하다.

Creator 의 새로운 구현체 ShoseCreator

또 다른 예시로 Creator interface 를 구현받는 ShoseCreator 도 만들어 보았다.
(객체 구조는 앞서 만든 Car 와 동일하다.)

test code 작성

 

Test 도 전부 잘 통과했다. 

 

반응형

댓글