전시 동적필터 리팩토링
아키텍처
전시 동적필터 리팩토링
두줄요약
페이지 타입별 필터 정책이 코드 곳곳에 흩어져 있어 확장과 유지보수가 어려운 문제를 리팩토링했습니다. 정책은 전략으로, 생성은 공통 흐름으로 분리해 변경 지점을 명확히 했습니다.
문제 상황
- 페이지 타입별 필터 노출 정책이 Mapper, Creator, Initializer에 흩어져 분기 증가
- 단순 조건은 조건문 추가, 복잡한 조건은 전용 Mapper 복사로 대응하며 구조적 부담 누적
- 새 페이지 타입 추가 때마다 비슷한 구현이 늘어 확장성과 유지보수성 저하
구조와 흐름
- 필터 노출 정책과 필터 생성 흐름을 분리하는 방향으로 리팩토링
- 정책은 QuickFilterStrategy enum과 Predicate 조합으로 캡슐화
- 생성은 QuickFilterBuilder와 Mapper의 공통 파이프라인으로 고정
선택 이유
- 정책은 변경 가능성이 높고 생성 흐름은 안정적으로 유지되어야 하는 책임으로 구분
- 페이지 타입별 정책을 enum 단위로 명시해 수정 지점을 한눈에 파악하도록 설계
- 확장은 복사가 아니라 조합으로 처리해 코드 중복과 분기 확산을 억제
장단점
- 장점: 정책 변경을 전략 내부로 국소화, 생성 흐름의 일관성 확보, 새로운 요구사항 대응 용이
- 장점: 카테고리 조합별 할인 정책을 Predicate 조합으로 표현
- 단점: 전략, Builder, Mapper 역할 분리로 초기 이해 비용 증가
