NMP-Study / EffectiveJava2022

Effective Java Study 2022
5 stars 0 forks source link

아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 #1

Closed okhee closed 2 years ago

okhee commented 2 years ago

Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라

클래스는 public 생성자 메소드 대신 static(정적) 팩토리 메서드를 제공할 수 있다.

장점

이름을 가질 수 있다.

new BigInteger(int, int, Random)
BigInteger.probablePrime(int, Random)

호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다

public static Boolean valueOf(boolean b) {
    return (b ? TRUE : FALSE);
}

하위 타입 객체의 인스턴스를 반환할 수 있다.

매개변수에 따라 다른 객체의 인스턴스를 반환할 수 있다.

정적 팩토리 메서드를 작성하는 시점에는 해당 객체의 클래스가 존재하지 않아도 된다.

단점

상속을 하려면 public/protected 생성자가 필요해서, 정적 팩토리 메서드만 제공하면 하위 클래스를 만들 수 없다.

정적 팩터리 메서드는 프로그래머가 찾기 어렵다.

정리