일급컬렉션
Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 합니다.
1. 비지니스에 종속적인 자료구조
- 6개의 숫자로만 이루어져야만 하고
- 6개의 숫자는 서로 중복되지 않아야만 하는
이런 자료구조가 없을까요?
없으니 저희가 직접 만들면 됩니다.
타인이 읽었을 때 자료형을 만들고 계산하는 로직을 본다면 어떤 비지니스 요구사항에 의해서 만든지 직관적으로 이해하기 힘듭니다. 일급컬렉션을 이용한다면 비지니스 요구사항중 관련되 것들을 한 곳에서 관리할 수 있어 타인이 이해하기 편합니다.
2. 불변
불변이 중요한 이유는?
⇒ 규모가 커질 수록 객체가 절대 값이 바뀔일이 없다는 게 보장되면 코드를 수정하는데 사이드 이펙트가 최소화 되기 때문입니다.
@Test
public void final도_값변경이_가능하다() {
//given
final Map<String, Boolean> collection = new HashMap<>();
//when
collection.put("1", true);
collection.put("2", true);
collection.put("3", true);
collection.put("4", true);
//then
assertThat(collection.size()).isEqualTo(4);
}
테스트 결과: final인데도 불구하고 컬렉션에 값이 들어가집니다.
@Test
public void final은_재할당이_불가능하다() {
//given
final Map<String, Boolean> collection = new HashMap<>();
//when
collection = new HashMap<>();
//then
assertThat(collection.size()).isEqualTo(4);
}
테스트 결과: final일 경우 값이 들어가지지만 새로 메모리를 할당하는 건 안됩니다.
일급컬렉션
setter, add 메소드를 따로 만들어주지 않는다면 컬렉션에 접근할 수 있는 방법이 없기 때문에 값을 변경/추가가 안됩니다. 생성자에 의해서만 값이 결정됩니다.
3. 상태와 행위를 한곳에서 관리
저는 이 장점이 가장 와닿았습니다!
상태와 행위를 한 곳에서 관리 = 객체지향
저희는 결국 코드를 잘 짜기 위해서 객체지향을 추구합니다. 상태와 행위를 한 곳에서 관리한다면 계산로직이 아니라 글을 읽듯 코드를 이해할 수 있기 때문입니다.
'자바' 카테고리의 다른 글
JVM(with 컴파일 과정) (1) | 2025.01.16 |
---|---|
자바 가비지 컬렉션 CMS → G1 GC → ZGC 버전 별 발전과정 (0) | 2025.01.10 |
자바 버전 별 선택 이유 (0) | 2025.01.10 |
올바른 Optional 사용법 (0) | 2024.12.21 |