Closed seokjin8678 closed 5 months ago
OpenIdUserInfoProvider 인터페이스의 구조는 다음과 같습니다.
OpenIdUserInfoProvider
public interface OpenIdUserInfoProvider { UserInfo provide(String idToken); }
그리고 OpenIdUserInfoProvider를 의존하는 구현체인 KakaoOpenIdClient의 구현은 다음과 같습니다.
KakaoOpenIdClient
@Component @RequiredArgsConstructor public class KakaoOpenIdClient implements OpenIdClient { private final KakaoOpenIdUserInfoProvider kakaoIdTokenUserInfoProvider; @Override public UserInfo getUserInfo(String idToken) { return kakaoIdTokenUserInfoProvider.provide(idToken); } @Override public SocialType getSocialType() { return SocialType.KAKAO; } }
KakaoOpenIdClient의 getUserInfo() 메서드의 호출은 단순히 KakaoOpenIdUserInfoProvider의 provide() 메서드를 위임하는 것이 전부입니다.
getUserInfo()
KakaoOpenIdUserInfoProvider
provide()
하지만 위임을 해서 얻을 수 있는 장점이 보이지 않으므로, KakaoOpenIdUserInfoProvider에서 구현하고 있는 비즈니스 로직을 KakaoOpenIdClient로 옮기는 것이 좋을 것 같습니다.
30분
✨ 세부 내용
OpenIdUserInfoProvider
인터페이스의 구조는 다음과 같습니다.그리고
OpenIdUserInfoProvider
를 의존하는 구현체인KakaoOpenIdClient
의 구현은 다음과 같습니다.KakaoOpenIdClient
의getUserInfo()
메서드의 호출은 단순히KakaoOpenIdUserInfoProvider
의provide()
메서드를 위임하는 것이 전부입니다.하지만 위임을 해서 얻을 수 있는 장점이 보이지 않으므로,
KakaoOpenIdUserInfoProvider
에서 구현하고 있는 비즈니스 로직을KakaoOpenIdClient
로 옮기는 것이 좋을 것 같습니다.⏰ 예상 소요 시간
30분