불변 클래스
-
Item 17. 변경 가능성을 최소화하라Book/Effective Java 3E 2022. 10. 22. 08:30
불변 클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스입니다. 불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않습니다. 자바 플랫폼 라이브러리에도 다양한 불변 클래스가 있습니다. String, 기본 타입의 박싱된 클래스들, BigInteger, BigDecimal이 여기 속합니다. 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전합니다. 불변 클래스 작성 규칙 객체의 상태를 변경하는 메서드(변경자)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 모든 필드를 final로 선언한다. 모든 필드를 private으로 선언한다. 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다. 아래 클래스는 ..
-
Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라Book/Effective Java 3E 2022. 10. 2. 10:53
클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있습니다. 그 클래스의 인스턴스를 반환하는 단순한 정적 메서드입니다. // 생성자 private final boolean value; public Boolean(boolean value) { this.value = value; } // 정적 팩터리 메서드 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 장점 이름을 가질 수 있습니다. 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있습니다. 예컨대 생성자인 BigInteger(int, int, Random)과 정적 팩터리 메서드인 ..