Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

개발자일기

가변보다 불변객체 본문

개발

가변보다 불변객체

ka0oll 2020. 5. 25. 10:23

객체지향 프로그래밍에서는 가변보다 불벽객체를 지향한다.

 

자바에서는 대표적인 예로 String, BigInteger 같은 클래스 들이 있다.

 

지향하는 이유을 알아보자.

 

불변 클래스(객체는) 가변 보다 오류가 생길 여지도 적다.

  • 쓰레드 안정하여 동기화 필요가 없다.
  • 안심하고 공유 할수 있다.
  • 특별한 이유가 없다면 불변으로

불변 객체라는건 이 객체가 생성과 동시에 완전한 객체

  • 불변 객체를 신뢰하고 사용할 수있다.

 

단점도 존재한다.

값이 다르면 독립된 객체가 생성이 필요.

  • 하지만  현대의 하드웨어 빵빵한 스펙에는 딱히 문제가 되지 않을것같다.
  • Integer클래스가 지원하는  객체풀(캐시)을 이용하는 방법도 있다.

 

불변 클래스 만들기

  1. final class로 상속을 방어
    • 하위클래스에서 변경할수 있다.
  2. 필드들을 final화
    • 불변의 필드라는 의도를 명시
    • 쓰레드 동기화에 문제 없다.
  3. private 필드
    • 클라이언트에서 접근 하여 수정하는일을 막아준다.
  4. 외 부 접근 할수 없도록 한다.
    • 가변 객체에 참조한는 필드를 제공해야한다면, 참조를 얻을수 없도록, 복사해서 전달한다.
    • 클라이언트가 수정을 가할수도 있기때문이다.

 

 

Comments