[Java] 불변 객체에 대해서 알아보자.

[Java] 불변 객체에 대해서 알아보자.

300x250

이미지 출처 Oracle

오늘은 java에서 불변 객체에 대해서 알아보는 시간을 갖도록 하겠다.

(1) 개념

객체 지향 프로그래밍에 있어 객체 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. 불변 객체는 read-only 메소드만을 제공하며, 객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 제공하는 경우 방어적 복사(defensive-copy)를 통해 제공한다. 즉, 객체에 값을 할당하면 내부 데이터를 변경시킬 수 없다. (재할당은 가능하다.) 대표적인 예로 String, Integer, Boolean 등이 있다.

(2) 장점

- 객체에 대한 신뢰도가 높아진다. (외부에서 임의로 내부의 값을 제어할 수 없다. 따라서 객체의 자율성이 보장)

- 생성자, 접근 메소드에 대한 방어 복사가 필요없다.

- 멀티스레드 환경에서 동기화 처리없이 객체를 공유할 수 있다.

- 사이드 이펙트가 발생할 확률이 적다.

(3) 단점

- 객체가 가지는 값마다 새로운 객체가 필요하다. 따라서 메모리 누수와 새로운 객체를 계속 생성해야하기 때문에 성능저하를 발생시킬 수 있다.

References

300x250

from http://iwillcomplete.tistory.com/45 by ccl(A) rewrite - 2021-10-13 10:27:04