템플릿 메소드 패턴

기술블로그·2022년 8월 8일
0

Design Patterns

목록 보기
4/4

Refactoring Guru

문제


당신이 인증을 제외한 OTP 발신 프로그램을 개발한다고 가정해봅시다. 특정길이의 랜덤한 숫자열을 sms, email 등의 다양한 방식으로 사용자에게 전달해야 합니다.

OTP를 생성하고 사용자에게 전달하는 것은 다음과 같은 순서를 따릅니다.
1. n개의 랜덤 숫자열을 생성
2. 메모리에 (1)숫자열을 추후 인증을 위해 저장
3. 전송할 컨텐츠 준비
4. 사용자에게 발신

sms로 전송하는지, email로 전송하는지에 따른 구현은 위 순서에서 (4)부분만 달라질 것입니다. 단순한 방식으로 구현한다면 (1),(2),(3) 부분에서 코드 중복이 발생할 것이고, 중복코드를 단순히 메서드로 뺀다면 SRP를 위반하게 될 것입니다.

문제 재정의를 해본다면 다음과 같습니다.

특정 알고리즘을 다양한 변형으로 구현할 때, SRP를 위반하지 않으면서 중복 코드를 제거할 수 있을까?


해결


알고리즘의 각 단계를 메서드로 갖는 추상클래스를 정의하고, 알고리즘을 구현하는 클래스가 상속하도록 합니다.


구현

깃허브

  • Refactoring Guru의 예시는 코드 중복을 해결하지 않고 있어서 약간 수정하였습니다.
profile
Software Engineer

0개의 댓글