Java 정적 팩토리 메서드(Static Factory Method) 와 싱글턴(Singleton)

2SEONGA·2025년 1월 23일
0

Java

목록 보기
6/13

정적 팩토리 메서드(Static Factory Method)

  • 객체 생성 방법 중 하나로,
    객체 생성을 전담하는 정적 메서드를 통해 객체를 반환하는 패턴이
    생성자와 유사한 역할을 하지만, 더 많은 유연성과 제어를 제공
  • 객체의 생성을 캡슐화하고, 생성되는 객체에 대한 제약이나 조건 추가 가능

특징

  1. 정적 메서드로 객체 반환
    : 정적 메서드를 사용해 객체를 반환하므로, 객체의 생성 시점과 방식 캡슐화 가능
  2. 객체 생성 제어
    : 팩토리 메서드에서 객체를 생성할 때 여러 조건을 설정하거나, 캐싱, 초기화 등 처리 가능
  3. 메서드명을 통한 명확한 의도 전달
    : Person.of(dto)처럼 명확한 메서드 이름을 사용하여 객체 생성 의도 전달
  4. 싱글턴 구현 가능
    : 객체가 하나만 생성되어야 할 때 싱글턴 패턴 구현 가능

사용 예시

(1) DTO -> Entity 변환 예시

외부에서 받은 DTO 객체를 내부 Entity 객체로 변환하는 과정에서 정적 팩토리 메서드 사용

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
class MakePersonDto {
    private int id = 10;
    private String name = "Aaron";
}

@AllArgsConstructor(access = AccessLevel.PRIVATE)
class Person {
    private int id;
    private String name;

    // 정적 팩토리 메서드
    public static Person of(MakePersonDto dto) {
        return new Person(dto.getId(), dto.getName());
    }
}
  • MakePersonDto
    : 외부에서 받는 DTO 객체로 외부 시스템과의 데이터 교환 담당
  • Person
    : 내부 Entity 객체로, 데이터베이스와 매핑되는 객체
    정적 팩토리 메서드 of()를 사용하여 MakePersonDto를 Person 객체로 변환

(2) 싱글턴 패턴 예시

정적 팩토리 메서드를 이용해 싱글턴 패턴을 구현
getInstance() 메서드를 통해 하나의 인스턴스만 생성되도록 보장

public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // 생성자는 private으로 외부에서 호출할 수 없게 설정
    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
  • Singleton
    : 하나의 인스턴스만 존재해야 하므로 getInstance() 메서드를 통해 인스턴스 반환
    생성자는 private으로 설정되어 있어 외부에서 new Singleton()으로 인스턴스 생성 불가
profile
(와.. 정말 Chill하다..)

0개의 댓글