일급 컬렉션 (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)를 따른다. |
코드의 가독성 향상 | 컬렉션의 조작을 위한 메서드가 명확히 정의되어 코드의 가독성이 좋아진다. |
버그 감소 | 컬렉션의 무분별한 수정이 방지되고, 상태 변경이 예측 가능해진다. |
테스트 용이성 | 컬렉션과 관련된 로직을 독립적으로 테스트 할 수 있다. |
데이터의 관리와 유지보수를 간소화하는데 매우 유용하고, 특히 상태 관리, 객체 관리, 로직 캡슐화가 중요한 시스템에서 그 효과를 발휘한다. 하지만 너무 남발하면 복잡성이나 성능에 대해서는 영향을 줄 수 있기 때문에 적절하게 사용해야 한다.
★★★☆☆
반응형
'개발 > 게임) 개발관련' 카테고리의 다른 글
개발환경)GitLab + 슬랙(Slack) 연동하기 (0) | 2024.12.16 |
---|---|
문제해결)Git Push 오류 (remote: GitLab: You are not allowed to push code to protected branches on this project.) (0) | 2024.12.03 |
코드관리) Doxygen 사용해서 C# 를 Document 만들기 (2) | 2024.11.12 |
C#) Enum 값 순환 처리하기 (0) | 2024.09.19 |
잡학지식)인하우스(In-house) 빌드 (0) | 2024.09.09 |
댓글