오늘은 java에서 불변 객체에 대해서 알아보는 시간을 갖도록 하겠다.
(1) 개념
객체 지향 프로그래밍에 있어 객체 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. 불변 객체는 read-only 메소드만을 제공하며, 객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 제공하는 경우 방어적 복사(defensive-copy)를 통해 제공한다. 즉, 객체에 값을 할당하면 내부 데이터를 변경시킬 수 없다. (재할당은 가능하다.) 대표적인 예로 String, Integer, Boolean 등이 있다.
(2) 장점
- 객체에 대한 신뢰도가 높아진다. (외부에서 임의로 내부의 값을 제어할 수 없다. 따라서 객체의 자율성이 보장)
- 생성자, 접근 메소드에 대한 방어 복사가 필요없다.
- 멀티스레드 환경에서 동기화 처리없이 객체를 공유할 수 있다.
- 사이드 이펙트가 발생할 확률이 적다.
(3) 단점
- 객체가 가지는 값마다 새로운 객체가 필요하다. 따라서 메모리 누수와 새로운 객체를 계속 생성해야하기 때문에 성능저하를 발생시킬 수 있다.
References
불변객체 - 위키백과, 우리 모두의 백과사전
객체 지향 프로그래밍에 있어서 불변객체(immutable object)는 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. 반대 개념으로는 가변(mutable) 객체로 생성 후에도 상태를 변경할 수 있다. 객체 전체가
ko.wikipedia.org
[Java] 불변 객체(Immutable Object) 및 final을 사용해야 하는 이유
클린코드를 읽어도, 이펙티브 자바를 읽어도, 개발을 잘하는 팀의 얘기를 들어도 항상 좋은 코드를 얘기할 때면 불변의 객체를 필연적으로 접하게 되는 것 같습니다. 그래서 이번에는 불변의 객
mangkyu.tistory.com
[Java] Immutable Object(불변객체)
면접에서 "자바에서 불변객체에 대해 설명해주세요.."라는 질문을 받았다.속으로 'final만 붙이면 불변객체 아닌가?'라는 생각을 했지만 불변객체에 대해 공부하지 않아 모른다고 했다...그래서
velog.io
'컴퓨터 이론 > Java' 카테고리의 다른 글
[Java] String / StringBuilder / StringBuffer 에 대해서 알아보자. (0) | 2021.10.14 |
---|