-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라 #1
Comments
9페이지 4번째 문단 끝에
정적 팩터리 메서드를 통한 인스턴스 통제와 열거 타입의 인스턴스 통제는 성격이 달라 보이는데 다른분들은 어떻게 생각하시나요?? |
여기서 말하는 인스턴스 통제는 반복되는 요청에 같은 객체를 반환하는 식이라고 합니다.
확실하지는 않지만 위의 코드처럼 새로운 객체를 리턴할수도 있지만, 원래 있는 객체(즉, 싱글턴)로도 정적팩토리를 사용할 수 있다는 의미같아요. |
@ksy90101 그런데 정적 팩터리 메서드는 static메서드를 통해 인스턴스를 반환을 조절함으로써 인스턴스를 통제하지만 통제하는 방식이 조금 다른 거라고 보면 되겠군요. |
두 분이 말씀하신 내용에 덧붙여 두 가지 방법이 인스턴스 통제하는 방식에서 어떤 차이점이 있는지 조금 더 자세히 나와있습니다. 여기서 소개하는 세 가지 방식 중
public class Elvis {
private static final Elvis INSTANCE = new Elvis();
private Elvis() { ... }
public static Elvis getInstance() { return INSTANCE; }
public void leaveTheBuilding() { ... }
}
public enum Elvis {
INSTANCE;
public void leaveTheBuilding() { ... }
} 이 두가지의 내용을 살펴보면 둘다 인스턴스를 통제한다는 점에서는 동일하지만, 정적 팩터리 방식은 직렬화를 역직렬화할 때 가짜 객체가 생성되어 인스턴스 통제가 안될 수 있지만 열거 타입을 사용하면 간결한 방식으로 직렬화가 가능하며 인스턴스 통제가 가능하다고 합니다. (물론 정적 팩터리 방식도 readResolve메서드와 transient를 이용해서 인스턴스 통제를 할 수 있지만, item89에서 직렬화를 할 경우 정적팩터리 방식보다 enum을 추천하고 있습니다.) |
No description provided.
The text was updated successfully, but these errors were encountered: