개발/Java & Kotlin

[Java] 일급 컬렉션 알아보기

devhooney 2024. 12. 4. 10:02
728x90

 

 

 

일급 컬렉션 알아보자

 

 

 

1. 일급 컬렉션이란?

일급 컬렉션(First-Class Collection)은 하나의 컬렉션을 감싸는 클래스를 만들고, 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴

 

 

 

 

2. 광고

728x90

 

 

 

3. 예시

아래 코드 중에서 Order의 List 자료구조를 감싼 Orders가 일급 컬렉션의 예시

// 일급 컬렉션
public class Orders {

    private final List<Order> orders;

    public Orders(List<Order> orders) {
        validate(orders); // 검증 수행
        ...
    }

    public void add(Order order) {
        if (order == null) {
            throw new IllegalArgumentException("Order cannot be null");
        }
        orders.add(order);
    }

    public List<Order> getAll() {
        return Collections.unmodifiableList(orders);
    }

    public double getTotalAmount() {
        return orders.stream()
                     .mapToDouble(Order::getAmount)
                     .sum();
    }
}

 

public class OrderService {
  
    private final Orders orders = new Orders();

    public void addOrder(Order order) {
        orders.add(order);
    }

    public Orders getOrders() {
        return orders;
    }

    // 추가 비즈니스 로직...
}

 

 

4. 일급 컬렉션을 사용해야하는 이유

일급 컬렉션 클래스에 로직을 포함하거나 비즈니스에 특화된 명확한 이름을 부여할 수 있다.

또한, 불필요한 컬렉션 API를 외부로 노출하지 않도록 할 수 있으며, 컬렉션을 변경할 수 없도록 만든다면 예기치 않은 변경으로부터 데이터를 보호할 수 있다.

 

 

 

 

 

- 참고

https://hudi.blog/thoughtworks-anthology-object-calisthenics/

https://jojoldu.tistory.com/412

728x90