불변객체

    [Effective Java] 변경 가능성을 최소화하라

    불변 클래스 불변 클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스다. 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전하다. 불변 클래스를 만드는 규칙 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. => 상속을 막는 대표적인 방법은 클래스를 final로 선언하는 것이다. => 생성자를 모두 private으로 만들고 정적 팩터리를 제공하는 방법도 있다. => 다음 코드에서는 PhoneNumber를 상속하고 name필드를 바꿀 수 있는 변경 메서드를 정의함으로써 불변이 아닌 경우의 수를 제공하게 된다. // 불변 클래스를 의도하고 만들었다고 가정하자. public class PhoneNumber {..