ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 디자인 패턴 적용기
    글또 2022. 6. 26. 17:49

    안녕하세요~
    이번에는 사이드 프로젝트에 도입했던 디자인 패턴에 대해 글을 써보겠습니다.

    1. 기획의 변화

    저희 서비스에서 사용자는 등급을 부여받습니다.

    위와 같은 기준을 통해 다음 레벨로 등급업을 할 수 있었습니다.

    하지만 추가된 기획으로 인해 기준이 변경되었습니다.
    단순 작성글의 개수가 아닌 행동에 따라 포인트가 부여되는 방식으로 말이죠.

    2. 디자인 패턴 도입기

    유저가 로그인, 글 작성, 댓글 작성 등등 많은 이벤트에 따라 다른 점수를 부여했어야 했습니다.
    처음 들었던 생각은 책임 연쇄 패턴이었습니다.
    적용 방안은 2가지로 나뉠 수 있었습니다.

    - 이벤트 타겟을 주체로 설정 (게시글, 댓글, 로그인)
    - 행동을 주체로 설정 (생성, 삭제)

    2.1 이벤트 타겟을 주체로 설정

    위와 같이 설계를 했을 때는 매 class 마다 create와 delete 등 공통된 메소드가 들어갈 수 있습니다.

    2.2

    행동(작성, 삭제) 등으로 분리 시에는 위와 비슷한 형태로 나뉘고
    checkType 메소드에서 해당 행동이 게시글에서 발행된 이벤트인지 댓글에서 발행된 이벤트 인지 확인하는 절차가 필요해 보였습니다.


    2.1번의 장점은 포인트 타겟에게 좀 더 집중할 수 있고 의존성도 타겟과 관련된 것들만 가질 수 있다고 생각되었고
    2.2번은 createClass는 결국 게시글, 댓글 등과 같이 의존성을 가져가야 합니다. 추후에 다른 이벤트 타겟이 추가된다면
    2.1번은 class추가가 되겠지만 2.2번은 의존성 추가와 checkType등의 메소드 변경이 필요해 보였습니다.

    결국 2.1번과 같이 이벤트 타겟을 보는 방향으로 가기로 했습니다.

    3. 최종 로직


    위와 같은 책임 연쇄 패턴의 장점은 무엇일까요?
    만약 인스타그램의 스토리처럼 새로운 기획이 들어왔고 스토리 생성 시 포인트를 부여해야 한다면
    포인트 정책을 상속받는 스토리 포인트 정책을 추가하면 되는 것입니다.

    댓글

Designed by Tistory.