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

디자인 패턴 공부 - 프로토 타입 패턴의 학습 -2-

by 인터넷떠돌이 2024. 2. 28.
반응형

안녕하세요?

 

지난번에 디자인 패턴 중에서 원형 패턴이라고 불리는 프로토타입 패턴에 대해서 한번 실습을 해 보기는 했습니다만, 문제는 항상 남아 있습니다. 우선 가장 큰 것이라고 하면, 역시나 경량 패턴은 같은 오브젝트를 위치만 다르게 해서 복제하는 것이라면, 프로토타입 패턴이라는 원형 패턴은 '비슷한' 오브젝트를 복제해서 만들어 낸다는 큰 차이점이 있다는 것 입니다.

 

 

먼저 부모 클래스에서 변수를 물려주기 위해서는 위 스크린샷에서 볼 수 있는 것처럼 일단 하나하나 변수를 선언해 주도록 합니다.

 

 

그리고 나서 이 물려받은 변수를 제대로 표현할 수 있도록 출력이 나올 수 있게 어떻게 만들어 주도록 합니다. 이렇게 하는 것으로 일단 작업을 하나 했으며........

 

 

이제 몬스터 1과 2를 생성해 보도록 하는데, 여기서는 각각 다른 HP와 Atk값을 지니도록 변경해 주도록 합니다. 이렇게 해서 어떤 결과가 나오는 가 하면...........

 

 

이렇게 몬스터 1과 2의 스탯이 다른 복제 오브젝트가 생성이 되는 것을 확인할 수 있습니다. 다만 이런다고 해서 모든 문제가 해결이 되는 것이 아니기는 합니다.

 

 

그 다음으로 문제가 되는 것이 바로 이 new 항목인데, 이게 과연 제대로 무언가가 반영이 된 것인지 아닌지에 대해서 한번 생각해 봐야 하는 문제가 있습니다.

 

 

그래서 이번에는 아예 클래스명() {}인 메서드로 클래스가 시작되지 마자 - 클래스가 메모리에 올려지는 단계 = 오브젝트화가 되는 순간에 실행이 되는 메서드를 하나 만들어 주도록 합니다.

 

 

역시나 몬스터 2의 클래스에서도 위 스크린샷과 같은 사항을 만들어 주도록 합니다. 이렇게 하는 이유라면 이유인 것이 바로 new항목으로 해서 한번만 클래스의 오브젝트가 생성이 된다 = 복사본이 아닌 새로운 것을 계속 찍어내는 것인지 아닌지 알아보기 위해서 입니다.

 

 

이렇게 해서 변수 3과 4를 통해서 몬스터 1과 몬스터 2를 각각 한번 생성해 보도록 합니다. 제 기대대로 한다고 하면, 얘네들은 몬스터 1과 2가 시작이 되었다는 메세지를 출력하지 말아야 합니다.

 

 

그리고 제 기대대로 start를 한번씩만 실행을 하고서, 제대로 생성이 되지 않은 채로 복제본의 메서드만 실행이 되는 것을 확인할 수 있었습니다. 이렇게 해서 일단 하나하나 완성을 해 나가고 있기는 있는데, 이걸 하면서 제네릭 타입에 대해서도 실습을 하면서 정말, 단순히 몬스터만이 아니라 장애물을 복사본을 만들어 낸다고 하면, 이걸 바탕으로 이루어 진다고 해도 될 정도 입니다.

반응형