들어가며
우테코 미션을 진행하면서 일급 컬렉션에 대해서 엄청엄청 많이 들어보았다. 그래서 정리를 해보고자 한다.
일급 컬렉션
일급 컬렉션이란 값 객체(Value Object)를 포함하고 있는 컬렉션이다. 값 객체란 값 그 자체로 의미가 있으며, 변경 불가능하다는 특징을 가지고 있는 것이다. 일급 컬렉션은 이러한 값 객체들을 모아서 하나의 객체로 다루는 것을 의미한다.
Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 한다.
일급 컬렉션의 장점
- 코드 가독성의 향상
- 값 객체가 포함된 컬렉션을 변수로 사용하는 것보다, 일급 컬렉션으로 묶어서 사용하는 것이 가독성이 더 좋다.
- 의미 전달력의 향상
- 일급 컬렉션을 사용하면, 컬렉션의 용도와 의미를 명확하게 전달할 수 있다.
- 불변성의 보장
- 일급 컬렉션에 포함된 값 객체들은 불변 객체이기 때문에, 컬렉션 내의 값이 변경되는 것을 방지할 수 있다.
class의 역할이 무거워 지고, 중복코드가 많아진다. 이를 일급 컬렉션을 통해 해결하면 각각이 상태와 행위를 관리할 수 있기 때문에 좋아진다.
개인적으로 느낀 장점
private final List<Car> cars;
public Car getCar(int index){
return cars.get(index).getCar();
}
라는 코드가 있을때 우리는 cars.get(index).getCar() 라는 방법으로 Car 객체를 가져올 수 도 있을 것이다. 근데 Car 라는것은 Cars에서만 사용할 수 있게 추상화를 하여 cars.getCar(index)를 통해 간단화 할 수 있다고 생각한다.
일급 컬렉션 구현 방법
일급 컬렉션은 다음과 같은 방법으로 구현할 수 있다.
public class FirstClassCollection {
private final List<ValueObject> values;
public FirstClassCollection(List<ValueObject> values) {
this.values = Collections.unmodifiableList(values);
}
public List<ValueObject> getValues() {
return values;
}
}
위의 코드에서 List 대신 Set 또는 Map 등의 컬렉션을 사용할 수도 있다.
이처럼 일급 컬렉션은 값 객체들을 모아서 하나의 객체로 다루는 것을 의미하며, 가독성, 의미 전달력, 불변성 보장 등의 장점이 있다.
'코코코딩공부 > JAVA' 카테고리의 다른 글
[JAVA] 제네릭 Generic (1) | 2023.03.04 |
---|---|
[JAVA] 예외 처리 (0) | 2023.02.26 |
[JAVA] 원시값 포장 (0) | 2023.02.25 |
[JAVA] equals와 hashCode를 Override 해야하는 이유 (0) | 2023.02.25 |
[JAVA] 정규표현식 (0) | 2023.02.14 |