Programing

불변객체 (Immutable Object)

BUST 2018. 8. 28. 22:51

불변객체 (Immutable Object)

  • 객체를 생성 후 그 상태를 바꿀수 없는 객체
  • 객체가 가지고 있는 멤버 변수 (properties)가 변하지 않기 때문에 중간에 값이 바꿈으로써의 버그가 나는 코드를 작성할 확률이 줄어든다.
  • 변경이 되지 않기 때문에  멀티스레드 환경에서 Thread Safe하다.
  • 멤버 변수가 바뀐다고 한다면 새로운 객체를 생성하면 된다.
  • 기존 객체를 활용하는것이 아니고 새로운 객체가 계속 생성이 되기 때문에 Minor GC가 많이 발생이 될수가 있다.
    • 메모리의 크고, CPU 사양이 좋기때문에 거의 문제가 되지 않는다
    • 메모리,CPU 환경이 제약이 많은임베디드 환경에서는 문제가 될수 있다. 객체를 재 활용하는 방향으로 개발을 해야 된다.
  • 자바스크립트에서 불변 객체를 사용하고 싶다면 IMMUTABLE(https://facebook.github.io/immutable-js/) 라이브러리를 사용을 하면 된다.
  • 대표적으로 Java에서의 String은 불변 객체이다.
String str = "ABC";
String newStr = str.toLowerCase();

Reference


'Programing' 카테고리의 다른 글

Observer Pattern  (0) 2018.09.30
MVC Pattern  (0) 2018.09.04
B tree, B+ tree  (0) 2018.08.25
At-least-once Delivery  (0) 2018.08.22
Reactive Programming  (0) 2018.08.19