JAVA
아이템 17. 변경가능성을 최소화하라.
gracelove91
2019. 12. 11. 18:05
반응형
아이템 17. 변경가능성을 최소화하라.
불변클래스
- 인스턴스의 내부 값을 수정할 수 없는 클래스
- 불변 객체는 단순하다. 생성된 시점의 상태를 파괴될 때까지 그대로 간직한다.
- 스레드세이프하여 따로 동기화할 필요가 없다. 불변객체는 안심하고 공유할 수 있다.
- clone메서드나 복사 생성자는 제공하지 않는 게 좋다.
- 자유롭게 공유가 가능하고, 불변 객체끼리는 내부 데이터를 공유할 수 있다.
- 맵의 key와 set의 원소로 쓰기에 좋다.
- 실패 원자성을 제공한다
불변클래스를 만드는 법
- 객체의 상태를 변경하는 메서드를 제공하지않는다.
- 클래스를 확장할 수 없도록 한다. ( 대표적으로 클래스를 final로 선언)
- 모든 필드를 final로 선언한다
- 모든 필드를 private으로 선언한다.
- 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다.
반응형