퍼사드 패턴 (Facade Pattern)

SSAD·2023년 2월 13일

Facade Pattern

  • Facade는 "건물의 정면"을 의미하는 단어

  • 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여
    간략화된 인터페이스를 제공해주는 디자인 패턴을 의미

  • 퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가
    라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고,
    복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공

퍼사드 패턴 적용해보기

적용 전 코드



// 인증번호 요청 API
// 함수이름 createTokenOfPhone
// 1. 핸드폰번호의 매개변수가 10 ~ 11 검증 필요
// 2. 토큰 생성(getToken)
// 3. 토큰 핸드폰에 전송!!!

const createTokenOfPhone = (pnumber, count) => {
    
  // 1. 휴대폰 번호 자리수 맞는지 확인하기
  if(pnumber.length !== 10 && pnumber.length !== 11){
      console.log('에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!')
      return 
  }

  // 2. 핸드폰 토큰 6자리 만들기

  if (count == undefined){
      console.log('에러 발생 !!! 갯수를 제대로 입력해 주세요!!!');
      return 
  } else if (count <= 0) {
      console.log('에러 발생 !!! 갯수가 너무 적습니다!!!');
      return 
  } else if (count > 10) {
      console.log('에러 발생 !!! 갯수가 너무 많습니다!!!');
      return 
  }

  const result = String(Math.floor(Math.random() * 10 ** count)).padStart(count, '0');
  console.log(result);

  // 3. 핸드폰번호에 토큰 전송하기
  console.log(pnumber + "번호로 인증번호" + result + "를 전송합니다.")
}


createTokenOfPhone('01012345678', 6);

적용 후


function checkValidationPhone(myphone) {
    if (myphone.length !== 10 && myphone.length !== 11) {
        console.log('에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!');
        return false;
    } else {
        return true;
    }
}

function getToken(count) {
    if (count === undefined) {
        console.log('에러 발생!!! 갯수를 제대로 입력해 주세요!!!');
        return;
    } else if (count <= 0) {
        console.log('에러 발생!!! 갯수가 너무 적습니다!!!');
        return;
    } else if (count > 10) {
        console.log('에러 발생!!! 갯수가 너무 많습니다!!!');
        return;
    }
    const result = String(Math.floor(Math.random() * 10 ** count)).padStart(
        mycount,
        '0',
    );
    return result;
    // console.log(result)
}

function sendTokenToSMS(fff, ggg) {
    console.log(fff + '번호로 인증번호' + ggg + '를 전송합니다!!');
}

function createTokenOfPhone(myphone, count) {
    // 1. 휴대폰번호 자릿수 맞는지 확인하기
    const isValid = checkValidationPhone(myphone);
    if (isValid) {
        // 2. 핸드폰 토큰 6자리 만들기
        const mytoken = getToken(count);

        // 3. 핸드폰번호에 토큰 전송하기
        sendTokenToSMS(myphone, mytoken);
    }
}

createTokenOfPhone('01012345678', 6);
profile
learn !

0개의 댓글