디자인 패턴의 3가지 분류
3가지 패턴의 목적을 이해하기!
1.
#생성 패턴 (Creational) : 객체의 생성 방식 결정
Class-creational patterns, Object-creational patterns.
예) DBConnection을 관리하는 Instance를 하나만 만들 수 있도록 제한하여, 불필요한 연결을 막음.
2.
#구조 패턴 (Structural) : 객체간의 관계를 조직
예) 2개의 인터페이스가 서로 호환이 되지 않을 때, 둘을 연결해주기 위해서 새로운 클래스를 만들어서 연결시킬 수 있도록 함.
3.
#행위 패턴 (Behavioral): 객체의 행위를 조직, 관리, 연합
예) 하위 클래스에서 구현해야 하는 함수 및 알고리즘들을 미리 선언하여, 상속시 이를 필수로 구현하도록 함.
이중 팩토리 패턴은 객체 생성 관련 상세 로직을 숨기고, 객체를 생성하는 코드의 유연성을 높이는 데 목표로 하는 생성 패턴에 해당
팩토리 패턴은 객체 생성에 관한 로직을 하위 클래스에 위임하는 패턴.
상위 클래스와 하위 클래스가 분리 → 느슨한 결합
JAVA SPRING 백엔드 개발자가 팩토리 메서드 패턴을 사용하는 경우
•
다양한 타입의 객체 생성: 서로 다른 타입의 객체를 생성해야 하는 경우, 각 타입에 맞는 팩토리 메서드를 구현하여 사용할 수 있습니다. 예를 들어, 다양한 타입의 데이터베이스 연결을 생성하는 경우, 각 DB 타입에 맞는 연결 객체를 생성하는 팩토리 메서드를 구현할 수 있습니다.
•
빈(Bean) 생성: Spring 프레임워크에서는 빈 팩토리를 통해 빈 객체를 생성하고 관리합니다. 이때 빈 팩토리는 팩토리 메서드 패턴을 사용하여 빈 객체를 생성합니다. 개발자는 @Bean 어노테이션을 사용한 메서드를 통해 빈 객체를 생성하고, Spring 컨테이너는 이 메서드를 호출하여 빈 객체를 생성하고 관리합니다.
•
의존성 주입(Dependency Injection): 팩토리 메서드 패턴은 의존성 주입에도 사용됩니다. 객체가 다른 객체를 필요로 할 때, 팩토리 메서드를 통해 필요한 객체를 생성하고 주입할 수 있습니다. 이를 통해 코드의 결합도를 낮추고 유연성을 높일 수 있습니다.