공부한 거 계속 업데이트 예정...
public static Foo withName(String name) {
return new Foo(name);
}
public static void main(String args) {
Foo foo = Foo.withName("dsg");
}
장점
1) 이름을 가질 수 있다. (메서드 이름이 잘 보이잖아)
2) 새로운 객체를 생성하지 않을 수 있다.
3) 리턴 타입의 하위 타입 객체를 반환할 수도 있다.
4) 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수도 있다.(3이랑 연장선상 이야기)
ex) EnumSet
5) static 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다.