본문 바로가기
개발/게임) 개발관련

개발지식) 일급 컬렉션 (First-Class Collection)

by 테샤르 2024. 11. 23.

일급 컬렉션 (First-Class Collection)

 

일급 컬렉션은 컬렉션(List, Set, Map 등)을 Wrapping하여 사용하는 디자인 패턴이다.
컬렉션 자체를 하나의 객체로 취급하며, 컬렉션을 조작하는 로직을 그 객체 내에 캡슐화한다.

 

반응형

 

 

< 주요 원칙 > 

컬렉션 외의 다른 속성은 가지지 않는다.

컬렉션과 관련된 로직은 모두 일급 컬렉션 내부에 존재한다.

컬렉션은 외부에서 직접 접근하지 않는다.

 

 

< 활용 예시 >

 

인벤토리 시스템에서 다양한 아이템이 들어가는데 이때 일급 컬렉션 클래스르 만들어서 관리한다.

public class Inventory {
    private List<Item> items = new List<Item>();

    public void AddItem(Item item) {
        if (!CanAddItem(item)) return;
        items.Add(item);
    }

    public bool CanAddItem(Item item) {
        return items.Count < MaxCapacity;
    }

    public List<Item> GetItemsByType(ItemType type) {
        return items.Where(item => item.Type == type).ToList();
    }

    // 기타 로직들...
}

 

 

< 장점 >

  설명
캡슐화와 책임 분리 컬렉션 관련 로직이 분리되어, 각 클래스의 단일 책임 원칙(SRP)를 따른다.
코드의 가독성 향상 컬렉션의 조작을 위한 메서드가 명확히 정의되어 코드의 가독성이 좋아진다.
버그 감소 컬렉션의 무분별한 수정이 방지되고, 상태 변경이 예측 가능해진다.
테스트 용이성 컬렉션과 관련된 로직을 독립적으로 테스트 할 수 있다.

 

 

데이터의 관리와 유지보수를 간소화하는데 매우 유용하고, 특히 상태 관리, 객체 관리, 로직 캡슐화가 중요한 시스템에서 그 효과를 발휘한다. 하지만 너무 남발하면 복잡성이나 성능에 대해서는 영향을 줄 수 있기 때문에 적절하게 사용해야 한다.

 

★★★☆

 

반응형

댓글