정적 팩토리 메서드

sungs·2025년 8월 29일

자바

목록 보기
82/95

정적 팩토리 메서드

앞에 static이 붙어 인스턴스 생성을 해주는 메서드다. 간단한 건 기본 생성자를 만들어 사용하면 되지만, 이미 생성된 객체가 있다면 그 객체를 반환한다거나 메서드 이름을 명시해야 하는 등 생성하는 과정에서 따로 처리해야할 게 있으면 사용한다.

// Member.java
public class Member {

    private final String name;

    // 1. 생성자를 private으로 선언하여 외부에서 new 키워드로 직접 생성을 막습니다.
    private Member(String name) {
        this.name = name;
    }

    // 2. 객체 생성을 위한 정적 팩토리 메서드를 public으로 제공합니다.
    // 메서드 이름을 통해 어떤 역할을 하는지 명확히 알 수 있습니다.
    public static Member of(String name) {
        // 추가적인 유효성 검사 로직 등을 여기에 넣을 수 있습니다.
        return new Member(name);
    }

    public String getName() {
        return name;
    }
}

// Main.java
public class Main {
    public static void main(String[] args) {
        // 컴파일 에러: Member의 생성자가 private이므로 직접 호출할 수 없습니다.
        // Member member1 = new Member("홍길동");

        // 올바른 방법: 정적 팩토리 메서드를 통해 객체를 생성합니다.
        Member member2 = Member.of("김철수");

        System.out.println("생성된 멤버의 이름: " + member2.getName());
        // 출력: 생성된 멤버의 이름: 김철수
    }
}

이렇게 사용할 수 있다. 생성자를 통해 유연한 구현이 가능해진 것이다.

profile
앱 개발 공부 중

0개의 댓글