구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다.
다양한 구현체 (Product)가 있고, 그중에서 특정한 구현체를 만들 수 있는 다양한 팩토리 (Creator)를 제공할 수 있다.
구현 방법
확장에 열려있고 변경에 닫혀있는 구조로 만든다.
팩토리 메소드 패턴을 적용했을 때의 장점은? 단점은?
- 장점: 객체지향 원칙 중 개방 폐쇄 원칙(OCP)을 적용할 수 있다.
- 단점: 패토리 메서드 패턴을 적용하기 전보다 클래스의 수가 많아진다. 하지만 클래스별로 단일 책임의 관점에서는 오히려 책임 분리가 되기 때문에 큰 문제가 되지 않는다고 생각한다.
“확장에 열려있고 변경에 닫혀있는 객체 지향 원칙”을 설명하세요.
- “확장에 열려 있다”는 의미는 새로운 변경사항이 생겼을 때 유연하게 코드를 추가, 수정할 수 있다는 것이다.
- “변경에 닫혀있다”는 의미는 새로운 변경사항에 의해서 기존의 코드에 변경이 일어나지 않는다는 것이다.
자바 8에 추가된 default 메소드에 대해 설명하세요.
- 자바 7까지는 인터페이스에 메서드 정의만 할 수 있고 구현은 할 수 없었으나, 자바 8부터 인터페이스에 메서드를 구현까지 할 수 있는 default 메서드 개념이 추가되었다.
- 자바 9부터는 인터페이스에 private 메서드를 구현할 수 있는 기능까지 추가되었다.
실무 적용 사례
단순한 팩토리 패턴
- 매개변수의 값에 따라 또는 메소드에 따라 각기 다른 인스턴스를 리턴하는 단순한 버전의 팩토리 패턴
- java.lang.Calendar 또는 java.lang.NumberFormat
스프링 BeanFactory
- Object 타입의 Product를 만드는 BeanFacotry라는 Creator
예제 코드
'GoF의 디자인 패턴' 카테고리의 다른 글
어댑터(Adapter) 패턴 (0) | 2022.01.13 |
---|---|
프로토타입(Prototype) 패턴 (0) | 2022.01.10 |
빌더(Builder) 패턴 (0) | 2022.01.08 |
추상 팩토리 패턴 (0) | 2022.01.06 |
싱글톤(Singleton) 패턴 (0) | 2021.12.29 |
댓글