정적 팩토리 메서드(static factory method)

*정적 팩토리 메서드(Static Factory Method)는 객체를 생성하는 public static ***메서드를 의미하며, 생성자(new ...)보다 여러 장점을 가집니다.

1. 생성 목적에 대한 이름 표현이 가능하다.

public class Car {
    private String brand;
    private String color = "black";

    private Car(String brand, String color) {
        this.brand = brand;
        this.color = color;
    }

    public Car(String brand) {
        this.brand = brand;
    }

    public static void main(String[] args) {
        // 검정색 테슬라 자동차 
        Car teslaCar = new Car("Tesla");

        // 빨간색 BMW 자동차
        Car bmwRedCar = new Car("BMW", "Red");
    }
}

클래스 이름과 동일해야 하므로, 이름만으로는 생성 의도를 명확히 전달하기 어렵습니다.

*new Car("Tesla") ,new Car("BMW", "Red") 개발자는 매개변수의 순서와 의미를 정확히 알아야 합니다*.

class Car {
    private String brand;
    private String color;

    private Car(String brand, String color) {
        this.brand = brand;
        this.color = color;
    }

    // 정적 팩토리 메서드 (매개변수 하나는 from 네이밍)
    public static Car brandBlackFrom(String brand) {
        return new Car(brand, "black");
    }

    // 정적 팩토리 메서드 (매개변수 여러개는 of 네이밍)
    public static Car brandColorOf(String brand, String color) {
        return new Car(brand, color);
    }
}

메서드 이름을 통해 반환될 객체의 특성이나 생성 목적을 명확히 나타낼 수 있습니다.

이는 코드의 가독성을 크게 향상시킵니다.

2. 인스턴스에 대해 통제 및 관리가 가능하다

메서드를 통해 객체 생성을 한 단계 거치므로, 인스턴스 생성을 통제할 수 있습니다.