서비스를 인터페이스로 구축하는 이유를 여쭙고싶습니다
178
15 asked
서비스를 인터페이스로 구축하는 이유를 여쭙고싶습니다!
Answer 1
0
음 단순하게 ChatGPT의 답변만으로도 어느정도 감이 오실 듯 해서 정리해 보면
Spring에서 서비스 계층(Service Layer)을 인터페이스로 설계하는 이유는 주로 다음과 같은 몇 가지 중요한 원칙과 장점을 따르기 위함입니다.
1. 유연한 확장성과 교체 가능성
인터페이스를 사용하면 특정 구현 클래스에 의존하지 않고, 인터페이스를 기준으로 코드를 작성할 수 있습니다. 이렇게 하면 기존의 구현을 교체하거나 새로운 기능을 추가할 때 코드 수정이 최소화됩니다.
예를 들어, 서비스 계층의 구현을 변경하거나 테스트용 목(Mock) 객체를 사용할 때 인터페이스를 사용하면 유연하게 대체할 수 있습니다.
2. 느슨한 결합(Loose Coupling)
인터페이스를 통해 비즈니스 로직을 정의하고, 실제 구현은 인터페이스를 따르게 함으로써 클라이언트 코드(컨트롤러 등)와 구현 클래스 간의 결합도를 낮출 수 있습니다. 이렇게 하면 시스템의 유지보수성이 향상되고, 클래스 간 의존 관계를 관리하기가 더 쉬워집니다.
3. 테스트 용이성
단위 테스트나 통합 테스트를 작성할 때, 실제 구현 대신 목 객체(Mock)나 스텁(Stub)을 사용하여 서비스 계층의 동작을 테스트할 수 있습니다. 인터페이스를 사용하면 이러한 대체 작업이 용이해져서 테스트 작성이 훨씬 수월해집니다.
4. SOLID 원칙 중 DIP (Dependency Inversion Principle) 준수
DIP는 상위 수준의 모듈이 하위 수준 모듈에 의존해서는 안 되며, 추상화에 의존해야 한다는 원칙입니다. 즉, 서비스 계층이 구현이 아닌 인터페이스에 의존하게 하여 상위 계층이 하위 계층의 구체적인 구현에 종속되지 않도록 하는 것이 핵심입니다.
5. 다형성(Polymorphism) 활용
인터페이스는 다형성을 제공하여, 여러 구현체를 쉽게 사용할 수 있게 합니다. 특정 상황에 따라 서로 다른 구현체를 동적으로 주입하거나 사용할 수 있습니다. 이로 인해 애플리케이션의 확장성과 유지보수성이 크게 향상됩니다.
요약
Spring에서 서비스 계층을 인터페이스로 설계하면 느슨한 결합, 유연한 확장성, 다형성의 장점이 있으며, DIP와 같은 객체 지향 설계 원칙을 준수할 수 있습니다. 또한, 테스트와 유지보수 측면에서도 많은 이점을 제공합니다.
입니다. 결론적으로 좀 더 유연한 설계 구조를 위해서라고 보시면 됩니다.
동일하게 실습하는데 이상하게 페이지를 찾지 못하네요..
0
72
2
22. REST 방식 컨트롤러 만들기(2), 29. 등록처리 부분 질문이 있습니다.
0
74
2
37강. 강의수업듣다 질문드립니다.
0
56
2
TodoDTO test 함수
0
80
3
강사님 오타 있음요
0
77
2
No 1. 교제(ppt) soruce 복붙 문제 의 건
0
94
4
No 1. 교제(ppt) soruce 복붙 문제 의 건
0
70
3
17강 문의드립니다.
0
44
1
카카오 연동설정이 이제 안되는거 같아요
0
187
2
8장 마지막 강의 시 오류
0
98
4
혹시 뭐가 문제인지 알 수 있나요?
0
87
2
챕터: React-Router 설정
0
58
2
백)TODO관련
0
56
2
마리아 db 설치중 포트를 이미 사용중이라고 합니다
0
109
2
이강의 듣고 소화시켰다면 몇년차 정도 개발자라고 할수 있을까요?
0
105
1
CSR , SSR 의 수요 궁금증 질문
0
81
2
섹션5부터...
0
72
1
간단한 코드 질문!!
0
59
2
tbl_todo 질문입니다
0
64
2
수업 외 질문인데 'tbl'이 무슨 의미인가요???
0
288
2
엔티티클래스에서 질문입니다
0
77
2
수정시 writer값이 삭제되는 오류
0
41
2
교안 31 오타 수정해주세요
0
62
2
쿠키에 accessToken, refreshToken을 담고, 조회 시에 undefined
0
78
1

