객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정한다.
즉 클래스의 인스턴스를 만드는 일을 서브클래스에 맡기는 것
ㅇ 개념
- 상위 클래스에서 객체 생성의 인터페이스 정의
상위 클래스는 객체를 생성하는 팩토리 메서드를 선언하지만, 구체적인 구현은 제공하지 않는다. - 객체 생성 로직의 캡슐화
클라이언트는 객체 생성 방식을 알 필요 없이 팩토리 메서드를 호출해 객체를 생성한다.
객체 생성 로직이 변경되어도 클라이언트의 코드에 영향을 받지 않는다. - 개방 폐쇄 원칙 준수
새로운 객체 유형을 추가할 때 기존 클래스를 수정하지 않고 새로운 하위 클래스를 추가하여 확장할 수 있다.
ㅇ 장단점
장점
- 개방-폐쇄 원칙 준수
새로운 객체 타입을 추가하려면 기존 코드를 수정하지 않고 하위 클래스를 추가하면 된다. - 유연한 객체 생성
객체 생성 로직을 상위 클래스와 분리하여 클라이언트 코드가 구체적인 클래스와 독립적으로 동작할 수 있다. - 코드 재사용성
공통 로직은 상위 클래스에서 정의하고 객체 생성 부분만 하위 클래스에서 구현하므로 코드 중복을 줄일 수 있다. - 결합도 감소
클라이언트는 팩토리 메서드를 통해 객체를 생성하므로 생성 방식이나 구체적인 클래스에 의존하지 않는다.
단점
- 클래스 수 증가
새로운 객체 유형을 추가할 때 마다 팩토리 클래스도 함께 추가해야 하므로 클래스의 수가 늘어나 복잡해질 수 있다. - 구현 복잡성 증가
단순한 객체 생성에는 오히려 불필요한 구조를 도입하게 될 수도 있다.
'CS' 카테고리의 다른 글
CS 메세지 큐(Message Queue) (0) | 2024.12.09 |
---|---|
[Design Pattern] 템플릿 메서드 패턴 (0) | 2024.11.26 |
[Design Pattern] 싱글톤(Singleton) 패턴 (0) | 2024.11.26 |
CS 알고리즘 시간복잡도 (0) | 2024.10.07 |
CS 오토 스케일링(Auto Scaling)이란 (0) | 2024.09.19 |