# 57. BattleProvider Refactoring ## 1. 목표 (Goal) - 비대해진 `BattleProvider` 클래스(약 900라인)를 역할별로 분리하여 유지보수성을 높이고 가독성을 개선합니다. - `CombatCalculator`(전투 계산)와 `BattleLogManager`(로그 관리) 클래스를 도입합니다. ## 2. 구현 계획 (Implementation Plan) 1. **디렉토리 생성:** `lib/game/logic` 폴더를 생성하여 로직 클래스들을 모아둡니다. 2. **`BattleLogManager` 분리:** - 전투 로그 리스트(`_battleLogs`)와 로그 추가 메서드(`logBattleInfo`)를 전담하는 클래스를 생성합니다. 3. **`CombatCalculator` 분리:** - 공격/방어 성공 확률, 데미지 산출 로직, 상태이상 적용 확률 등 순수 계산 로직을 분리합니다. 4. **`BattleProvider` 수정:** - 위 클래스들을 인스턴스로 포함하고, 해당 로직을 위임(delegation) 처리합니다. - `ChangeNotifier`로서의 UI 상태 관리 책임은 유지합니다. ## 3. 기대 효과 (Expected Outcome) - `BattleProvider`의 코드 라인 수 감소. - 전투 공식 수정 시 `CombatCalculator`만 수정하면 되므로 안전성 확보. - 로그 포맷이나 저장 방식 변경 시 `BattleLogManager`만 수정하면 됨.