[DDD] 인터페이스가 필요한가?

  • 응용 서비스 구현시 인터페이스의 필요성에 대해 종종 논의됨.
    public interface ChangePasswordService {
        public void changePassword(String memberId, String curPw, String newPw);
    }
    
    public class ChangePasswordServiceImpl implements ChangePasswordService {
        // 구현 ...
    }
  • 인터페이스가 필요한 경우?
    • 여러 구현체가 존재하는 경우
    • 런타임에 구현 객체를 바꿀 필요가 있을 경우
  • 단일 구현체다?
    • 하나의 응용 서비스에 대해 한 가지의 구현만 존재하기에, 인터페이스로 인한 구조 복잡성이 쓸 데 없이 증가한다.

만약 TDD 의 경우

  • TDD 는 실제 클래스의 구현 전에 인터페이스의 작성을 미리 다 해놓고 개발을 진행해야하기에, 인터페이스가 필요함
  • 하지만, TDD가 아닌 경우 Mockito같은 도구로 클래스에 대한 테스트 객체를 모킹이 가능하기에, 인터페이스가 무조건적으로 필요하지는 않다.


Uploaded by N2T