Language/Java

Service 인터페이스와 구현체 분리

hu6r1s 2024. 3. 6. 21:01

왜 분리해서 사용할까?

인터페이스와 구현체를 분리함으로써 구현체를 독립적으로 확장할 수 있으며, 구현체 클래스를 변경하거나 확장해도 이를 사용하는 클라이언트의 코드에 영향을 주지 않도록 하기 위함이기 때문이다.

이러한 구조로 프로젝트를 설계했을 때, interface에서 정의한 기능을 새로운 방식으로 구현해야 한다면 사용해야 하는 곳에서 구현체만 손쉽게 바꿀 수 있기 때문에 Service를 인터페이스로 만들고, 해당 기능을 ServiceImpl라는 클래스 로 구현하는 것이다.

사용 장점

확장 가능성과 유지보수성

현재는 인터페이스와 구현체 클래스가 일대일 관계를 맺고 있을지라도 언제 서비스가 커져서 구현체 클래스가 확장될지를 모른다. 그래서 이러한 구조로 확장 가능성을 열어둔다면 유지보수하기 편리하다.

협업

인터페이스는 하나의 큰 뼈대라고 생각하면 된다.

이 뼈대를 통해 협업하는 것에 있어 좋은 작용이 될 수 있다.

마무리

이와 같이 Repository도 똑같이 구현체와 인터페이스를 분리할 수 있다.