service 를 interface 로 두는 이유
안녕하세요 강사님.
서비스 계층을 설계할 때 인터페이스를 두고 구현체를 만드는 패턴을 사용하는 이유가 궁금합니다.
현재 프로젝트에서는 구현체가 하나뿐인데, 이런 상황에서도 인터페이스를 분리하는 것이 가지는 실질적인 이점이 무엇인지 알고 싶습니다.
특히 구현이 하나로 고정되어 있다면, 바로 구현 클래스를 빈으로 등록해도 되지 않을지 고민이 되었는데요.
설계 관점에서 인터페이스를 미리 분리해두는 이유와, 실무에서 어떤 장점이 있는지 설명해주시면 감사하겠습니다
답변 1
1
안녕하세요 쵸잉님 질문 주셔서 감사합니다.
말씀해주신부분처럼 굳이 인터페이스를 사용하지 않아도 됩니다. 이건 개인적인 스타일에 가까운거 같아요. 그래서 제 코드가 옳다고 말씀드리기에는 좀 조심스러운 부분이 있습니다.
근데 분리하게 되었을 떄 가질 수 있는 장점은 몇개 있습니다. 대표적으로 CGLIB 같은 문제로 인해서 생성자 제약을 피할 수도 있고, DIP 원칙의 관점에서 구현체가 바뀐다는 부분도 가정했을 떄 변경하기도 편하죠.
뭐 굳이 따지자면 이런 이유들이 다양하게 있는데, 우리가 현실적으로 코드 작성할 떄 막 이런 케이스까지 고려하지는 않습니다. 그래서 쵸잉님이 원하시는 스타일로 작성하셔도 큰 문제는 없을꺼같네요.
어디까지나 개발은 각자만의 스타일이 있으니깐요 ㅎㅎ 이정도면 이해가 되셨을까요??
감사합니다!
리프레시 토큰
0
2
0
섹션2, 대화&세션관리 수업 자료 누락
0
8
1
부하 테스트 시 설정 관련 질문드립니다
1
27
1
HelloSpringApplication.java 클래스 실행 오류
0
12
1
build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)
0
30
2
Inner class로 Config를 지정하는 이유
0
29
1
네이버 API | '검색 - 책' API 제공 중단
0
42
2
ArticleReadService 관련 질문
0
30
1
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
71
1
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
52
1
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
47
2
장치 의존성과 CSR
0
36
1
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
32
1
혹시 강의 내용하면서 실습했던 것을 개인 깃에다 올려도 될까요?
0
25
1
아무도 모르게 책 내시면 모르실 줄 알고!!
1
54
2
[영한님]Spring Boot 및 프로젝트 생성
0
56
2
RedisMessageBroker.kt setLocalMessageHandler 관련 문의
0
93
2
빌드 파일
0
96
2
웹소켓을 이용한 채팅시스템에서 부하테스트를 어떻게 진행해야할까요?
0
355
2
엔티티는 Data Class로 작성하면 안되나요?
0
120
2
stomp websocket
0
106
1
웹소캣 stomp
0
113
2
그레이스풀 셧다운과 데몬 스레드의 관계 질문
0
119
1
api모듈에대해 문의드립니다.
0
102
2





