일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 선택정렬
- Django
- 자료구조
- SpringSecurity
- jwt
- 문자열함수
- 시스템프로그래밍
- 공부기록
- java
- kafkaconsumer
- 트러블슈팅
- 코테
- 한이음
- AWS
- 기록
- git
- IT
- 코딩테스트
- 기술블로그
- github
- 협업도구
- codingtest
- 회고록
- 문자열압축
- 알고리즘
- testcode
- 백준
- 자바
- kafka
- c
Archives
- Today
- Total
신뇽이 되어보자
[Refact] Enum 확장 본문
728x90
옵션 별로 강의를 검색하는 기능을 구현할 때
선택한 키워드에 맞게 검색하는 방식이 달라지며 호출하는 메서드들이 각각 달라진다는 특징이 있다.
기존코드에서는 enum클래스에 선택 옵션들의 키워드를 선언한 후 서비스에서 구분을 했었다.
그러다가 Enum 클래스가 단순히 상수 값을 넘어서 상수 메소드로서의 이용 또한 가능함을 알게되었다.
상태와 행위를 한 곳에서 관리를 할 수 있어
객체지향적으로 코드를 패턴화 하여 유지보수가하기 용이하다는 장점이 있음을 알게 되었고
코드 개선을 해보고자 하였다.
public enum SearchOption {
DEPARTMENT{
@Override
public List<Lecture> search(LectureRepository lectureRepository, SearchLectureRequestDTO searchLectureRequestDTO){
return lectureRepository.findByDepartmentNameAndGradeAndLectureName(
searchLectureRequestDTO.getQuery(),
searchLectureRequestDTO.getGrade(),
searchLectureRequestDTO.getLectureName()
);
}
},
KEYWORD {
@Override
public List<Lecture> search(LectureRepository lectureRepository, SearchLectureRequestDTO searchDTO) {
return lectureRepository.findByLectureNameContaining(searchDTO.getQuery());
}
},
LECTURE_CODE {
@Override
public List<Lecture> search(LectureRepository lectureRepository, SearchLectureRequestDTO searchDTO) {
return lectureRepository.findByLectureCodeAndDivision(
searchDTO.getQuery(),
searchDTO.getDivision()
);
}
};
public abstract List<Lecture> search(LectureRepository lectureRepository, SearchLectureRequestDTO searchDTO);
}
위의 코드처럼 enum 클래스에 메서드를 정의하였다.
추상메소드를 만들고 구체화시키는 방식으로 구현을 했다.
728x90
'프로젝트' 카테고리의 다른 글
[Spring Security + JWT] 세션 기반 인증에서 JWT로 전환 회고 (0) | 2025.01.11 |
---|---|
[Nginx,Django,React] 배포 - 이슈 정리 (0) | 2024.11.09 |
[Refact] 코드 개선 (0) | 2024.10.30 |
[Error] ExcelFile & RDS 동기화 실시간 변경 데이터 적용 시 나타난 이슈s (0) | 2024.10.30 |
[Kafka] Producer로부터 받은 데이터를 DB에 적재하는 Consumer 구축 (0) | 2024.10.30 |