⚡팩토리 메소드 패턴이란?
팩토리 메소드 패턴(Factory Method Pattern)은 객체를 생성하기 위한 인터페이스를 정의하고, 객체의 생성을 서브클래스에게 위임하여 객체 생성을 유연하게 처리할 수 있는 디자인 패턴이다.
⚡팩토리 메소드 패턴은 어떤 경우에 사용하는가?
- 객체 생성과 관련된 코드의 변경을 최소화하고 싶을 때
- 객체 생성 코드를 별도의 클래스로 분리하여, 이를 수정할 경우에도 클라이언트 코드를 수정할 필요가 없어져 유지보수성을 높일 수 있다.
- 객체 생성에 대한 자세한 정보를 숨기고 싶을 때
- 클라이언트 코드에서는 팩토리 메서드를 호출하여 객체를 생성하고, 구체적인 객체 생성에 대한 정보는 팩토리 클래스 내부에 감추어 진다. 이를 통해 객체 생성에 대한 자세한 정보를 숨기고, 클라이언트 코드를 간단하게 유지할 수 있다.
- 객체 생성 방법을 다양화하고 싶을 때
- 팩토리 메소드 패턴은 객체 생성 코드를 별도의 클래스로 분리하므로, 이를 상속받은 하위 클래스에서 해당 객체 생성 방법을 다양화할 수 있다. 따라서, 여러 종류의 객체를 생성하는 경우에 유용하다.
- 클래스간의 결합도를 낮추고 싶을 때
- 객체 생성 코드와 클라이언트 코드 간의 결합도를 낮추고, 객체 생성 로직과 사용 로직을 분리하여 응집도를 높이고, 결합도를 낮춰 유지보수성을 높일 수 있다.
⚡팩토리 메소드 패턴의 장단점
장점
- 객체 생성 코드를 별도의 클래스로 분리하여, 유지보수성을 높일 수 있다. 객체 생성에 대한 변경이 필요할 경우에도 해당 객체를 사용하는 코드를 변경할 필요가 없어진다.
- 객체 생성 방법을 다양화할 수 있다. 팩토리 메소드를 상속받은 하위 클래스에서 해당 객체 생성 방법을 다양화할 수 있으므로, 여러 종류의 객체를 생성하는 경우에 유용하다. (확장에 열려있고 변경에 닫혀있는 객체지향 원칙 적용)
- 객체 생성에 대한 자세한 정보를 숨길 수 있다. 클라이언트 코드에서는 팩토리 메소드를 호출하여 객체를 생성하므로, 객체 생성에 대한 자세한 정보를 숨길 수 있다. (캡슐화)
- 클래스 간의 결합도를 낮출 수 있다. 객체 생성 코드와 클라이언트 코드 간의 결합도를 낮추고, 객체 생성 로직과 사용 로직을 분리하여 응집도를 높이고, 결합도를 낮출 수 있다.
단점
- 팩토리 메소드 패턴을 사용하면, 클래스의 수가 증가하여 복잡도가 높아질 수 있다. 팩토리 클래스와 팩토리 메소드를 추가해야 하므로, 코드량이 증가할 수 있다.
- 팩토리 메소드 패턴을 사용하면, 객체를 생성하는 데 필요한 추가적인 리소스가 필요하다. 객체 생성 코드를 별도의 클래스로 분리하면, 해당 클래스를 인스턴스화해야 하므로, 추가적인 메모리와 CPU 리소스가 필요하다.
⚡팩토리 메소드 패턴 소스 정리
⚡생각
팩토리 메소드 패턴에 대해서 공부를 하면서 내가 이해하기 쉬운 방향으로 정리를 해봤다.
장단점을 확인 하고 어떻게 내 소스에 적용할지 생각하면서 보자.
반응형
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 어댑터 패턴에 대한 내용 정리 (0) | 2023.03.24 |
---|---|
[디자인 패턴] 프로토 타입 패턴에 대한 내용 정리 (0) | 2023.03.21 |
[디자인 패턴] 빌더 패턴에 대한 내용 정리 (0) | 2023.03.20 |
[디자인 패턴] 추상 팩토리 패턴에 대한 내용 정리 (0) | 2023.03.16 |
[디자인 패턴] 싱글턴 패턴에 대한 내용 정리 (0) | 2023.03.13 |