You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
네이버나 구글도 카카오와 비슷하게 Map<String, Object>로 응답값을 파싱할 수 있으며 추상 메서드를 구현함으로써 알맞는 값을 반환할 수 있습니다. 우선 프로젝트에서 카카오 로그인만 구현하기로 해서 네이버, 구글 구현체는 만들지 않았습니다. 그러나, 이는 추후 확장성을 고려했을 때 정말 좋은 설계라 생각합니다. 기능 추가시 기존 코드를 수정하지 않으므로 OCP를 준수한다 볼 수 있습니다.
최근 프로젝트에서 소셜 로그인 구현을 맡게되어 관련 코드를 공유하고자 합니다! 일단 소셜 로그인의 경우 다음 3가지를 고려했습니다.
과정은 아래와 같습니다.
이 3개 플랫폼 모두 소셜 토큰을 통해 사용자 정보를 가져와 저장하는 과정에 다형성을 적용하고자 하였습니다. 우선 이 3개를 모두 포괄하는 슈퍼 클래스는 아래와 같습니다.
OAuthProfile.java
소셜 토큰을 통해 사용자 정보를
Map<String, Object>
로 파싱하여 저장 후 소셜(서브 클래스)마다 추상 메서드를 구현하여 알맞는 정보를 가져옵니다.카카오의 경우 아래와 같이 응답을 보냅니다.
이를
Map<String, Object>
로 관리하고 메서드마다 이를 통해 알맞는 값을 반환하도록 구현했습니다.KakaoProfile.java
네이버나 구글도 카카오와 비슷하게
Map<String, Object>
로 응답값을 파싱할 수 있으며 추상 메서드를 구현함으로써 알맞는 값을 반환할 수 있습니다. 우선 프로젝트에서 카카오 로그인만 구현하기로 해서 네이버, 구글 구현체는 만들지 않았습니다. 그러나, 이는 추후 확장성을 고려했을 때 정말 좋은 설계라 생각합니다. 기능 추가시 기존 코드를 수정하지 않으므로 OCP를 준수한다 볼 수 있습니다.추가로 앞에서 배운 Factory 패턴을 적용하여 SRP도 준수할 수 있습니다.
if 분기문을 사용한 팩토리 패턴
else if
,else
,switch
/case
문법을 지양하고 싶어 고민하다 enum, 함수형 인터페이스를 생각했습니다.enum, 함수형 인터페이스를 사용한 팩토리 패턴
이처럼 스터디에서 배운 이론적인 개념을 실제 개발에 적용을 하니 공부한 내용이 더 와닿는 느낌을 받았습니다.
The text was updated successfully, but these errors were encountered: