퍼사드 패턴 (Facade Pattern)

cabbage·2023년 1월 9일
0

기타

목록 보기
23/26
post-custom-banner

퍼사드 패턴?

퍼사드는 '건물의 정면'이라는 뜻이다.
안에 여러가지 복잡한 로직이 있더라도 밖에서 보이는 정면에 있는 함수에서는 비교적 간단하게 흐름을 파악할 수 있다.

  • 밖에서 보이는 정면에 있는 함수란 로직을 수행하는 각각의 함수들을 자신의 내부에서 호출하는 함수를 말한다.
  • 밖에서 보이는 정면에 있는 함수에서 호출되는 각각의 함수들은 저마다 맡고 있는 로직을 수행한다.
  • 이렇게 로직을 분리하는 이유는 어느 로직에서 어떤 문제가 생겼는지 파악하기가 쉽기 때문이다.
  • 정면에 있는 함수에서 모든 로직을 수행하면 코드 가독성이 떨어져 유지보수하기가 어렵다.

로직을 수행하는 함수들의 흐름을 보고, '아 정면에 있는 함수는 이런 역할을 하는 함수구나'라고 쉽게 파악할 수 있다.

간단한 예시

const createToken = function (phoneNum) {
  if (!checkPhoneNumber(phoneNum)) return;
  
  const token = getToken();
  
  sendTokenToSMS(phoneNum, token);
};

createToken("01012345678");
  • createToken 함수: 정면에 보이는 함수
  • 로직을 수행하는 함수들
    • checkPhoneNumber
    • getToken
    • sendTokenToSMS

createToken 함수를 보면 전체적인 흐름을 파악할 수 있다.

  1. checkPhoneNumber 함수: 휴대폰 번호 체크

    만약 검사를 통과하지 못하면 early-exit 패턴으로 바로 함수를 종료한다.

  2. getToken 함수: 인증번호 생성

  3. sendTokenToSMS 함수: 휴대폰 번호와 인증번호를 받아 사용자 휴대폰 번호로 인증번호 전송

결과적으로 createToken 함수는 휴대폰 번호를 확인하고, 휴대폰 번호 검사에 통과하면 인증번호를 생성해서, 사용자에게 전달하는 함수라는 것을 파악할 수 있다.

  • 로직 수행 함수들의 동작이 궁금하다면 직접 로직을 수행하는 함수들의 구현 방법을 찾아 본다.
  • 로직들이 서로 분리되어 있기 때문에 코드 유지보수가 쉽다.
profile
캐비지 개발 블로그입니다. :)
post-custom-banner

0개의 댓글