일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 수정자주입
- 생성자주입
- 토비의 스프링
- 동적파라미터
- ioc컨테이너
- 스프링
- 비기능적 요구사항
- 스프링시큐리티
- kotlin 리팩터링
- 그래프큐엘
- 스프링 시큐리티 설정
- 소프트웨어의 품격
- 기능적 요구사항
- 정적팩토리메서드
- 스프링 포매터
- open-session-in-view
- 스프링di
- jpa no session
- 자바 필터
- kotlin ::
- jpa lazy
- java predicate
- 스프링부트 도커
- 도커 이미지 빌드
- fetch join
- method refetence
- Spring
- Atomicity
- spring formatter
- IOC
Archives
- Today
- Total
공부기록
아이템 17. 변경가능성을 최소화하라. 본문
반응형
아이템 17. 변경가능성을 최소화하라.
불변클래스
- 인스턴스의 내부 값을 수정할 수 없는 클래스
- 불변 객체는 단순하다. 생성된 시점의 상태를 파괴될 때까지 그대로 간직한다.
- 스레드세이프하여 따로 동기화할 필요가 없다. 불변객체는 안심하고 공유할 수 있다.
- clone메서드나 복사 생성자는 제공하지 않는 게 좋다.
- 자유롭게 공유가 가능하고, 불변 객체끼리는 내부 데이터를 공유할 수 있다.
- 맵의 key와 set의 원소로 쓰기에 좋다.
- 실패 원자성을 제공한다
불변클래스를 만드는 법
- 객체의 상태를 변경하는 메서드를 제공하지않는다.
- 클래스를 확장할 수 없도록 한다. ( 대표적으로 클래스를 final로 선언)
- 모든 필드를 final로 선언한다
- 모든 필드를 private으로 선언한다.
- 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다.
반응형
'JAVA' 카테고리의 다른 글
코드의 점진적인 발진으로 동적파라미터를 이해해보자 (1) | 2020.03.20 |
---|---|
아이템24. 멤버클래스는 되도록 static으로 만들라. (0) | 2019.12.17 |
아이템15. 클래스와 멤버의 접근권한을 최소화하라. (0) | 2019.12.01 |
아이템12. toString을 항상 재정의하라 (0) | 2019.12.01 |
아이템11. equals를 재정의하려거든 hashCode도 재정의하라. (0) | 2019.11.30 |