service 를 interface 로 두는 이유
안녕하세요 강사님.
서비스 계층을 설계할 때 인터페이스를 두고 구현체를 만드는 패턴을 사용하는 이유가 궁금합니다.
현재 프로젝트에서는 구현체가 하나뿐인데, 이런 상황에서도 인터페이스를 분리하는 것이 가지는 실질적인 이점이 무엇인지 알고 싶습니다.
특히 구현이 하나로 고정되어 있다면, 바로 구현 클래스를 빈으로 등록해도 되지 않을지 고민이 되었는데요.
설계 관점에서 인터페이스를 미리 분리해두는 이유와, 실무에서 어떤 장점이 있는지 설명해주시면 감사하겠습니다
回答 1
1
안녕하세요 쵸잉님 질문 주셔서 감사합니다.
말씀해주신부분처럼 굳이 인터페이스를 사용하지 않아도 됩니다. 이건 개인적인 스타일에 가까운거 같아요. 그래서 제 코드가 옳다고 말씀드리기에는 좀 조심스러운 부분이 있습니다.
근데 분리하게 되었을 떄 가질 수 있는 장점은 몇개 있습니다. 대표적으로 CGLIB 같은 문제로 인해서 생성자 제약을 피할 수도 있고, DIP 원칙의 관점에서 구현체가 바뀐다는 부분도 가정했을 떄 변경하기도 편하죠.
뭐 굳이 따지자면 이런 이유들이 다양하게 있는데, 우리가 현실적으로 코드 작성할 떄 막 이런 케이스까지 고려하지는 않습니다. 그래서 쵸잉님이 원하시는 스타일로 작성하셔도 큰 문제는 없을꺼같네요.
어디까지나 개발은 각자만의 스타일이 있으니깐요 ㅎㅎ 이정도면 이해가 되셨을까요??
감사합니다!
JpaCursorItemReader의 정렬 조건 부재의 영향
0
8
1
소스코드 빈 파일 문의드려요
0
10
1
changeTeam 메서드 질문
0
19
1
"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션
1
24
2
테스트 관련 질문!
0
28
2
백엔드, 프론트엔드 충돌 미리 방지 관련
0
33
1
handleBindException 의 기대의도가 방향이 맞는지 궁금합니다.
0
27
2
SpringBoot 4.0.6 버전에서 PackageLogTracePostProcessor exception
0
36
2
settings.local.json에 어떻게 mcp 관련된 allow가 있나요?
0
28
2
페이징 처리에서 offset/limit에 대한 질문
1
30
1
인텔리제이 오류
0
38
1
안녕하세요 질문있습니다.
0
30
2
프로젝트 의존 관계
0
37
2
application.properties가 적용되지 않아요
1
46
3
새 프로젝트 속 제너레이터에 SpringBoot가 없습니다.
0
34
2
'디스패처(Dispatcher)' 훅 패턴 적용이 다 안되
0
38
2
RedisMessageBroker.kt setLocalMessageHandler 관련 문의
0
61
2
빌드 파일
0
78
2
웹소켓을 이용한 채팅시스템에서 부하테스트를 어떻게 진행해야할까요?
0
280
2
엔티티는 Data Class로 작성하면 안되나요?
0
96
2
stomp websocket
0
82
1
웹소캣 stomp
0
96
2
그레이스풀 셧다운과 데몬 스레드의 관계 질문
0
103
1
api모듈에대해 문의드립니다.
0
87
2

