제이슨의 개발이야기

[Design Pattern] 스트래티지 패턴! strategy pattern 본문

디자인 패턴

[Design Pattern] 스트래티지 패턴! strategy pattern

제이쓰은 2021. 3. 11. 12:16
728x90
반응형

스트레티지 패턴 (strategy pattern) 이란 

 

서로 다른 알고리즘들이 존재하고 , 실행 중 적합한 알고리즘을 선택해서 적용하는 패턴을 스트레티지 패턴 입니다

 

이것을 좀 더 쉽게 예를 들자면 영화 티켓을 구매하는 경우 

누군가는 초대권이 있어서 초대권으로 티켓을 받는 경우 , 누군가는 현금결제 ,  누군가는 신용카드 결제 , 누군가는 vip 멤버쉽 티켓 등등 

같은 티켓을 구매하지만 티켓을 구매하는 방식(알고리즘) 이 서로 다른 경우 스트레티지 패턴 (strategy pattern) 을 사용하면 쉽게 간결하게 구현 할 수 있습니다 ! 

 

다시 스트레티지 패턴 (strategy pattern) 을 정리하면

 

같은 종류의 작업(ex 영화티켓 구매) 을 하는 알고리즘을 정의 하고 각 알고리즘을 캡슐화  함 그리고 알고리즘(ex 초대권,현금결제 등등) 들을 서로 바꿔 사용할 수 있도록 함 스트레티지 패턴은 알고리즘을 사용하는 클라이언트로 부터 독립적으로 알고리즘을 바꿔서 적용시킬 수 있도록 하는 패턴을 스트레티지 패턴입니다! 

 

아래는 예제 코드 입니다 ※ 제가 급하게 생각한 예제인대 혹시 스트레티지 패턴 (strategy pattern) 에 어울리지 않는 예제라고 생각하시면 댓글 달아주시면 너무 감사합니다

person 객체(티켓 구매자)
영화관(판매원)
ticketStrategy interface
현금결제

 

카드 결제

 

초대장으로 구매

 

사실 위에 예제는 너무너무 쉬운 예제이고 다들 아시다시피 실제 개발 단계에서는 저런식으로 쉽게 나오는 경우가 별로 없습니다 ㅠㅠ 

 

그러나 중요한것은 개념입니다! 내가 원하는 알고리즘으로 바꾸고 작동한다는 개념!!! 이 것을 필히 기억,숙지 해주세요!!

728x90
반응형