종식당

[매일메일 2025-02-10] 일급 컬렉션이 무엇인가요? 본문

매일메일

[매일메일 2025-02-10] 일급 컬렉션이 무엇인가요?

종식당 2025. 2. 10. 20:42
728x90
반응형

💀 일급 컬렉션 (First-Class Collection)

일급 컬렉션은 하나의 컬렉션을 감싸는 클래스를 만들고, 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴을 말한다.

 

컬렉션이란 여러 개의 객체를 저장하고 관리하는 자료 구조를 의미한다. Java에서는 List, Set, Map 등의 컬렉션 프레임워크가 대표적인 예시이다.

 

아래 코드 중에서 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;
    }

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

 

🐈 일급 컬렉션을 사용해야 하는 이유는?

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

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

 

728x90
반응형