PSA 정의
- PSA는 잘만든 인터페이스다.
- 서비스 추상화
- 말 그대로 서비스를 추상화 해서 사용하는 것
- 약간 코드 구현의 느낌보단 → 개념의 느낌이 크다.
사용 방법
- 인터페이스의 역할이 → 공통된 행동을 강제하는 것 처럼
- 서비스의 추상화의 구현은 (PSA)
- 공통된 행동을 정의하는 서비스 인터페이스를 하나 두고
서비스 구현체들을 막 만들어서 갈아끼우게 된다.
- 그리고 당연히 구현체들은 메서드를 다 오버라이드로 구현해서 사용
- 예시) 메시지 서비스 인터페이스 → 폰 메시지 구현체, 이메일 메시지 구현체
예시2 ) JPA 를 사용할때 JPA 인터페이스가 있고
- JPA인터페이스를 구현하는 → 하이버네이트가 있고, 다른 2가지가 있다.
- 우리는 JPA 인터페이스를 사용하기 위해서 구현체로 하이버 네이트를 사용할 수도 있고, 다른걸로 JPA를 사용할 수 있음
질문
- 그럼 API 만들때 서비스 단에서 인터페이스를 만들고 -> 구현체 클래스들을 만들어서 갈아끼우는 것이 좋나요?
(그러면 -> 메서드 오버라이드도 해야함)