공부기록

아이템 17. 변경가능성을 최소화하라. 본문

JAVA

아이템 17. 변경가능성을 최소화하라.

gracelove91 2019. 12. 11. 18:05
반응형

아이템 17. 변경가능성을 최소화하라.


 

불변클래스

  • 인스턴스의 내부 값을 수정할 수 없는 클래스
  • 불변 객체는 단순하다. 생성된 시점의 상태를 파괴될 때까지 그대로 간직한다.
  • 스레드세이프하여 따로 동기화할 필요가 없다. 불변객체는 안심하고 공유할 수 있다.
  • clone메서드나 복사 생성자는 제공하지 않는 게 좋다.
  • 자유롭게 공유가 가능하고, 불변 객체끼리는 내부 데이터를 공유할 수 있다.
  • 맵의 key와 set의 원소로 쓰기에 좋다.
  • 실패 원자성을 제공한다

불변클래스를 만드는 법

  1. 객체의 상태를 변경하는 메서드를 제공하지않는다.
  2. 클래스를 확장할 수 없도록 한다. ( 대표적으로 클래스를 final로 선언)
  3. 모든 필드를 final로 선언한다
  4. 모든 필드를 private으로 선언한다.
  5. 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다.
반응형