본문 바로가기
인강/GoF의 디자인패턴

팩토리 메서드(Factory method) 패턴

by 맙소사 2022. 2. 5.

구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다.

다양한 구현체(Product)가 있고, 그 중에서 특정한 구현체를 만들 수 있는 다양한 팩토리(Creator)를 제공할 수 있다.

 

 

위까진 무슨 말인지 알아듣기가 힘들고, 실제 코드를 보면서 설명을 들으니까 이해가 된다.

회사에서 했던 것들을 팩토리 패턴으로 바꿀 수 있을 것 같다. 근데 모르는 단어가 너무 많이 나와 눈물나

의존성 주입 디펜던시 인젝션 진짜 어렵다

자바 9부터 private 사용가능 자바 8은 private를 사용할 수 없기 때문에 추상메서드로 정의하기

중간에 계층구조 하나 더 만들기

와 인텔리제이 클래스파일들 extends한거 다이어그램 볼 수 있어대박

 

 

- 팩토리 메서드의 장단점 이야기 하기

장점 :

주석 없이 코드를 읽기 수월하다고 생각함 (기존 코드를 건드리지 않아서 복잡해지지않고 간결해짐)

기존 로직을 건드리지 않고 새로운 인스턴스를 다른 방법으로 얼마든지 확장이 가능함

product와 create의 느슨한 결합

단점 :

클래스가 여러개로 늘어나게 됨

 

- "확장에 열려있고 변경에 닫혀있는 객체 지향 원칙" OCP(Open Closed Principle)에 대해 설명하기

변경에 닫혀있다 : 기존 코드를 변경하지 않고

확장에 열려있다 : 기능을 확장할 수 있다

 

- 자바 8에 추가된 default 메서드에 대해 설명하기

인터페이스에는 항상 추상 메서드만 정의할 수 있었고 인터페이스를 구현하는 클래스에서 그 메서드를 구현하거나 추상클래스로 만들어지거나 하는 방법밖에 없었는데 자바8부터는 인터페이스에 기본 구현체를 만들 수 있어서 인터페이스를 구현하거나 상속하는 클래스도 해당 기능을 사용할 수 있게 됨

자바8부터는 추상 클래스를 잘 사용하지 않고 인터페이스의 default 메서드를 사용함

여기서 자바9에 있는 private 메서드까지 공부하기

 

자바에 있는 Calendar가 심플팩토리메서드를 사용해서 만들어져 있으니 참고하기

그리고 Spring이 제공하는 BeanFactory가 팩토리메서드패턴을 구현한 구현체라고 볼 수 있다고 한다.

 

댓글