study/etc

정적 팩토리 메서드

836586697769 2024. 6. 27. 14:23

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

간접적으로 생성자를 호출하여 객체를 생성하는 클래스 메서드

 

장점 1. 생성 목적을 이름으로 표현 가능

new라는 키워드를 통해 객체를 생성하는 생성자는 매개변수의 유형과 개수 등 내부 구조를 잘 알고 있어야 목적에 맞게 객체를 생성할 수 있음

→ 뚜렷한 이름과 목적을 가진 정적 팩토리 메서드를 호출한다면 객체 생성의 의미 파악이 쉬워짐

class Car {
    private brand: string;

    private constructor(brand: string) { // private 설정으로 외부 접근 불가
        this.brand= brand;
    }

    // 정적 팩토리 메서드
    public static brandOf(brand: string): Car {
        return new Car(brand); // 메서드에서 생성자를 호출하여 객체를 반환
    }
}

const car = Car.brandOf('Genesis');
console.log(car); // Car { brand: 'Genesis' }

 

장점 2. 객체 생성 로직의 캡슐화

생성자의 내부 구현을 드러낼 필요가 없음

class CarDto {
    private brand: string;
    private position: number;

    public static from(car: Car): CarDto {
        return new CarDto(car.getBrand(), car.getPosition());
    }
}

const car = new Car(car.getBrand(), car.getPosition); // 생성자 사용
const carDto = CarDto.from(car); // 정적 팩토리 메서드 사용

 

 

reference: https://tecoble.techcourse.co.kr/post/2020-05-26-static-factory-method/