본문 바로가기
유니티5 독학 & 게임 제작

디자인 패턴 공부 - 상태 패턴의 공부 -

by 인터넷떠돌이 2024. 3. 20.
반응형

안녕하세요?

 

정말로 오랫만에 디자인 패턴을 공부하다 보니, 클래스의 상속에 대해서 잠시 잊어버려서 조금 헤메이게 되기도 했었습니다. 그렇지만, 이 상태(state) 패턴이라는 것을 언제 쓰는가 봤더니, 제 경우라면 윳쿠리의 부스터를 쓸 경우 많은 if문을 생성해서 일일히 조건처리를 해야 했습니다만, 그럴 필요도 없이 바로 상태 - 부스터로 처리하면 간단하게 처리가 되었던 것 이었습니다.

 

 

먼저 상속을 주기 위해서 가장 근본이 되는 비정상이라고 이름을 붙인 클래스를 하나 만듧니다. 정말 일주일 이상 안 잡았다고 좀 감이 않 좋아져서 abstract를 붙여서 부모 클래스를 만든다는 것도 겨우 생각해 내고, 메서드도 이 abstract를 붙여야 한다는 것을 겨우겨우 알아내서 했습니다.

 

 

먼저 노멀한 상태일 때를 기준으로 해서 하나 만들어 주도록 하고, 그리고 나서 다음으로 진행을 한 것은 눈이 멀어버린 상태라는 뜻인 blind, 그리고 광포화 상태라고 할 수 있는 berserker상태를 각각 만들어 주도록 합니다. 이렇게 여기 상태 패턴의 핵심이라고 생각하는 것은 바로 상태별로 클래스를 만들어서, 필요할 때 불러와야 한다는 것 입니다.

 

 

그리고 나서 실제로 상태를 적용받게 될 클래스, 여기서는 왕국기사라는 이름을 붙였는데, 이 기사의 경우에는 switch문으로 구성이 되어 있는 이 방식을 이용해서 각각의 상태 클래스를 new를 붙여서 불러올 수 있도록 만들어야 합니다. 이러면 메모리를 너무 많이 차지 하지 않을까 하는 생각이 들기도 하지만, new를 붙인다고 해서 이게 반드시 메모리를 더 먹고 그런 것은 아니라고 들었습니다.

 

 

그렇게 해서 처음에는 normal인 상태로 실행이 되도록 어떻게 만들어 주도록 합니다. 그런데 문제라면 문제인 것이 바로 저렇게 상태가 변했을 경우 그게 맞는 메서드가 제대로 싱행이 될 수 있는지 없는지에 대해서 한번 알아보고자 합니다.

 

 

이번에는 이렇게 제데로 반영이 되는 것을 확인할 수 있기는 있었습니다. 이렇게 해서 하나 해결을 하기는 했지만, 문제는 이 상태를 클래스로 만든다는 것을 기억하고 나서, 어떻게 실전에서 적용할 때는 과연 제대로 적용할 수 있는지 의문이 들기도 합니다만, 일단 지금은 너무 깊이 생각하지 말고 전체적인 디자인 패턴을 하나하나 익히는 데 집중해야 할듯 합니다.

반응형