도메인주도개발
[DDD] 인터페이스가 필요한가?
OverTheHorizon3410
2024. 1. 19. 15:50
- 응용 서비스 구현시 인터페이스의 필요성에 대해 종종 논의됨.
public interface ChangePasswordService { public void changePassword(String memberId, String curPw, String newPw); } public class ChangePasswordServiceImpl implements ChangePasswordService { // 구현 ... }
- 인터페이스가 필요한 경우?
- 여러 구현체가 존재하는 경우
- 런타임에 구현 객체를 바꿀 필요가 있을 경우
- 단일 구현체다?
- 하나의 응용 서비스에 대해 한 가지의 구현만 존재하기에, 인터페이스로 인한 구조 복잡성이 쓸 데 없이 증가한다.
만약 TDD 의 경우
- TDD 는 실제 클래스의 구현 전에 인터페이스의 작성을 미리 다 해놓고 개발을 진행해야하기에, 인터페이스가 필요함
- 하지만, TDD가 아닌 경우 Mockito같은 도구로 클래스에 대한 테스트 객체를 모킹이 가능하기에, 인터페이스가 무조건적으로 필요하지는 않다.
Uploaded by N2T