*정적 팩토리 메서드(Static Factory Method)는 객체를 생성하는 public static ***메서드를 의미하며, 생성자(new ...)보다 여러 장점을 가집니다.
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);
}
}
메서드 이름을 통해 반환될 객체의 특성이나 생성 목적을 명확히 나타낼 수 있습니다.
이는 코드의 가독성을 크게 향상시킵니다.
메서드를 통해 객체 생성을 한 단계 거치므로, 인스턴스 생성을 통제할 수 있습니다.