기본 콘텐츠로 건너뛰기

라벨이 이펙티브 JAVA인 게시물 표시

2장 객체 생성과 파괴

 생성자 대신 정적 팩터리 메서드를 고려하라  public static Boolean valueOf ( boolean b) { return b ? Boolean. TRUE : Boolean. FALSE ;  }                                 정적 팩터리 메서드가 생성자보다 좋은 장점 다섯 가지                              1. 이름을 가질 수 있음 : 이름을 통하여 기능 유추가 가능, 생성자는 시그니처에 제약이 있음, 똑같은 타입을 파라미터로 받는 생성자 두개를 만들 수 없으니까 그런 경우에도 정적 팩토리 메소드를 사용하는 것이 유용함 //정적 팩토리 메소드 public static Item newIphone (){ return new Item (apple, camera, text); } //생성자를 사용하는 경우 Item iphone = new Item(apple, camera, text); public Foo (String name){ this . name = name; } //에러가 남(똑같은 String을 받아오므로) public Foo (String address){ this . address = address; }                              2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 됨 : 반복되는 요청에 같은 객체를 반환하는 식으로 정적 팩터리 방식의 클래스는 언제 어느 인스턴스를 살아 있게 할지를 철저히 통제할 수 있음(인스턴스 통제 클래스), 인스턴스를 통제하면 클래스를 싱글턴으로 만들 수도, 인스턴스화 불가로 만들 수도 있고, 불변 값 클래스에서 동치인 인스턴스가 단 하나뿐임을 보장할 수 있음(인스턴스 통제는 플라이웨이트 패턴의 근간이 되며, 열거 타입은 인스턴스가 하나만 만들어짐을 보장) //java.math.BigInteger.valueOf메서드의 코드 public static final BigInte