하리Hari

3. 전략 패턴 (Strategy)

행동을 인터페이스로 분리하여 실행 중에 자유롭게 교체하는 전략 패턴을 알아봅니다.

전략 패턴은 객체가 할 수 있는 특정 ’행동(전략)’을 클래스 내부에서 직접 구현하지 않고, 인터페이스로 밖으로 빼내어 실행 중에 마음대로 갈아 끼울 수 있게 하는 패턴이에요. 게임에서 무기를 자유롭게 교체하는 상황을 상상하면 이해하기 쉬워요!

(참고) 모든 무기가 공통으로 가질 인터페이스를 만들어요
[무기]를 규정하자:
    <공격하기>가 있어야 한다 ()

[무기]를 따르는 [칼]을 설계하자:
    <공격하기>를 만들자 ():
        "칼로 강하게 찌르기!"를 출력하자

[무기]를 따르는 [활]을 설계하자:
    <공격하기>를 만들자 ():
        "멀리서 활 쏘기!"를 출력하자

(참고) 무기를 쥐고 휘두를 플레이어 클래스예요
[용사]를 설계하자:
    '_장착무기'를 [무기]인 비어있음으로 정하여 숨기자
    
    <무기바꾸기>를 만들자 ([무기]인 '새로운무기'):
        '나'의 '_장착무기'를 '새로운무기'로 정하자
        "무기를 교체했습니다!"를 출력하자
        
    <공격>을 만들자 ():
        만약 ('나'의 '_장착무기'가 비어있음과 같다) 라면:
            "맨손 공격! 퍽퍽!"을 출력하자
        그렇지 않다면:
            '나'의 '_장착무기'의 <공격하기>()를 실행하자

(참고) 게임 시작! 무기 없이 맨손으로 공격해 봐요
'주인공'을 [용사]인 새로운 [용사]()로 정하자
'주인공'의 <공격>()을 실행하자

(참고) 칼을 장착하고 다시 공격!
'주인공'의 <무기바꾸기>(새로운 [칼]())를 실행하자
'주인공'의 <공격>()을 실행하자

(참고) 몬스터가 멀리 있으면 활로 교체!
'주인공'의 <무기바꾸기>(새로운 [활]())를 실행하자
'주인공'의 <공격>()을 실행하자
놀이터
결과
코드를 작성하고 '실행' 버튼을 눌러보세요.