✅ 설계 방향 요약
Noticefication은 실행 책임만 담당 (action(factory))
NotiHandlerFactory는 Pre / Transmit / Post 핸들러 조립 책임
- 각
NotiHandler는 내부에 파이프 구조 (NotiWorkPipe) 주입
- 각 파이프는
NotificationPreprocessor 전략 목록으로 구성됨
🏗️ 실행 흐름 요약
App.main()
→ NotiHandlerFactory 생성
→ PreNotiHandler (JsonParsingWorker)
→ TransmitHandler (MailFilter)
→ PostHandler (SaveFileWorker)
→ Noticefication 생성
→ noticefication.action(factory)
💡 핵심 설계 패턴 활용
| 패턴 | 적용 위치 |
|---|
| 팩토리 패턴 | 핸들러 조립 (NotiHandlerFactory) |
| 전략 패턴 | 각 단계별 파이프 처리기 (NotificationPreprocessor) |
| 템플릿 메서드 느낌 | 추상 NotiHandler.handle() 구조 |
| 파이프라인 | NotiWorkPipe.execute() 처리 흐름 |
📦 주요 클래스 구성
| 클래스 | 책임 |
|---|
Noticefication | 전체 실행 제어 (action) |
NotiHandlerFactory | Handler 조립 팩토리 |
NotiHandler<T, U> | 단일 처리 단계 (Pre/Transmit/Post) |
NotiWorkPipe<T, U> | 순차 실행 흐름 조립기 |
NotificationPreprocessor<T, U> | 실질 처리 전략 |
App | 실행 진입점 + 예시 구성 |
🔄 기존 소스 vs 리팩토링 후 구조 비교
| 항목 | 기존 구조 | 리팩토링 후 구조 | 개선 효과 |
|---|
| 핸들러 조립 | Noticefication 내부에서 직접 생성 | NotiHandlerFactory에서 조립 후 주입 | 단일 책임 원칙(SRP) 실현, 유지보수 향상 |
| 핸들러 계층 | NotiHandler 인터페이스 수준 정의 | NotiHandler 추상 클래스 → Pre/Transmit/Post 상속 | 책임 분리 명확, 흐름 확장 유리 |
| 워크플로우 표현 | List<Worker> 흐름 불명확 | NotiWorkPipe + NotificationPreprocessor 파이프 구조 명시 | 실행 흐름 시각화 및 유연화 |
| 실행 오케스트레이터 | Noticefication이 생성+실행 모두 담당 | 실행만 담당 (action(factory)) | 단일 역할 집중으로 테스트 및 확장 용이 |
| 출력 전략 | 없음 또는 핸들러 내부 처리 | PostNotiHandler에서 전략화 가능성 열림 | 분리 가능한 처리 전략 구성 기반 마련 |