Object)요일(묶음)별 계산(DayOfWeekCalc)을 Set<rule> rules로 구현(Plan8)
구간처리에 사용되는 prev데코객체를 시간대별 계산에 적용하기
📜 제목으로 보기
- 연속된 구간이 아닌 범주별처리 or 범주묶음별 처리도 Rule객체 소유
- 요일별 요금 계산(DayOfWeekCal)
- 이미 정해져있는 범주별로 계산해줄 Rule객체를 만들고, 계산클래스는 Rule컬렉션(Set) 1개만 필드로 보유한다. Rule들은 자신이 처리할 대상이 맞는지 확인해야한다.
- Rule객체의 class는 자신의 처리구간(요일) + 처리시 필요정보(단위시간과, 단위시간당 부과할 요금)를 필드로 가진다
- Rule객체는 처리할 대상이 범주1개가 아니라 범주묶음이라면, Set컬렉션필드를 가지면 된다. 자신이 처리할 대상이 1개의 범주라서 contains로 확인하면 된다.
- Rule들을 소유한 Calc는 처리대상을 만들어주고, rule를 반복문 돌리되, 개별계산은 해당없을시 ZERO반환하여 바깥에서 누적계산이 되도록 한다.
- 주의) 시간 구간처리시, 23, 59, 59의 가능성이 있다면, +1초 예외처리를 해줘야한다.
- rule 테스트
- calc 테스트
- 요일별 요금 계산(DayOfWeekCal)
연속된 구간이 아닌 범주별처리 or 범주묶음별 처리도 Rule객체 소유
요일별 요금 계산(DayOfWeekCal)
- call -> interval -> 특정요일 -> 요일별로 따로 계산
- call -> interval -> 특정 시간대구간 -> 미리 시간대구간별로 계산법을 쪼개놓은 prev데코객체를 for문을 돌면서 -> 자기구간에 걸리면 처리하도록(연결되어있는 것이 마치 컬렉션)처럼
미리 요일별로 계산법을 쪼개놓은 class -> 객체들(rows)
을 만들어놓고, 반복문을 돌면서,자기 요일이면 계산해서 반환
하도록 한다.- 이 때,
단일 필드 1개 요일
하나하나 쪼개놔도 되지만,Set<요일> =
을 통해,미리 쪼개놓기을 주중/주말
로 짤라놔도 된다.
이미 정해져있는 범주별로 계산해줄 Rule객체를 만들고, 계산클래스는 Rule컬렉션(Set) 1개만 필드로 보유한다. Rule들은 자신이 처리할 대상이 맞는지 확인해야한다.
-
이미 정해져있는 구간 / 범주별 처리는 개별처리해줄 rule객체 컬렉션or prev데코객체를 두고,
반복문
을 통해 돌리고, 해당하는 처리들이, 자기몫만 계산하고 반환하게 한다. 이 때,해당하지 않는 놈들
도 있으니ZERO반환
하면서누적
되는 계산법이 필수다- 필드로 연결되는 데코객체라면 -> 단일 객체필드 1개만 소유한다.
- 범주별 개별 처리하는 객체라면 -> 모든 범주별처리 객체를 Set필드에 모아서 이것을 소유한다.
- 동적으로 변하는 것이 아니기 때문에 final필드 + 생성자 주입으로 Set필드를 초기화한다.
- 미리 모든 경우의수를 다 쪼개놨기 때문에,
반복문을 돌며, 각Rule자신은 자신의 처리대상이 맞는지 확인기능도 포함
되어야한다.
-
Calc계산기와 이미 정해져있는 범주들을 처리해줄 모든 경우의수 rules 필드를 만든다.
-
기존 Calculator를 구현해서, 계산기능을 넣는다.