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

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

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

안녕하세요?

 

이번에는 프로토 타입이라고 해서 진짜로 데이터를 가진 몬스터를 대량으로 복사할 때 사용되는 디자인 패턴이 있습니다. 다만 먼저 들어가기에 앞서서 이 프로토타입 패턴이 어디를 봐서 경량패턴과 차이가 있는지는 몰랐습니다만, 나중에 알아 보니까, 경량 패턴의 경우에는 메모리를 줄이고 크게 데이터가 의미 없을 배경에만 사용하는 것이라면.... 이 프로토 타입 패턴은 하나하나 데이터를 일일히 입력하지 않고 공통된 데이터를 보유한 상태에서 가지가지 스탯이 다른 몬스터를 생성할 때 필요한 패턴이라고 이해를 하였습니다.

 

 

먼저 프로토타입이 될 클래스를 지정해 주고 나서, 여기다가 데이터가 변하면 안되기 때문에, 클래스를 선언하는 문자열 앞에 abstract를 붙여 주도록 합니다. 그리고 나서 이후 이 몬스터의 메서드를 변형해서 쓸 것이기 때문에 이렇게 부모 클래스이자 프로토 타입이 될 클래스를 작성해 주도록 합니다.

 

 

그리고 나서 다음으로는 생성할 몬스터를 Monster001과 Monster002라고 간단하게 이름을 붙였습니다. 그리고 나서 이 대상물을 실제로 복제해서 메모리상에서 올려주기 위해서 사용되는 코드인 MemberwiseClone()함수를 붙여 주도록 합니다. 그리고 나서 Print()메서드를 변형하기 위해서 override를 집어 넣도록 합니다.

 

 

다음으로는 팩토리 패턴과도 연관되어 있는 내용물인데, 일단 클래스 안에 List형태로 프로토타입의 클래스를 저장시키도록 합니다. 그리고 Create<T>라는 메서드를 지정하는 방식으로 리스트 내에서 특정 형태의 클래스만 골라서 Clone명령어를 집어 넣어 줄 수 있습니다.

 

 

이렇게 해서 위 스크린샷에서 볼 수있는 방식으로 어떻게 해서 실행을 시켜 보도록 합니다. 그러면 당연하게도 지정한 문구가 튀어 나오는 것을 볼 수 있습니다.

 

 

Override를 붙여서 변형이 된 메서드로 싱행이 되는 것을 확인할 수 있었습니다. 다만 이게 100% 프로토 타입 패턴인지 의문이 들기도 하면서 어떻게 손봐야 할 부분이 많이 있을 것으로 생각이 됩니다. 이제 두번째 실습에서는 데이터의 일부를 프로토 타입에서 공유하는 형식으로 구현해 봐야 할듯 합니다.

반응형