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

디자인 패턴 공부 - 관찰자 패턴의 학습 -

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

안녕하세요?

 

어떻게 보면 이 관찰자 패턴이라고 영어로는 옵져버 패턴 (Observer Pattern)이라고 불리는 이 패턴은 상당히 복잡할 수도 있겠다는 생각이 듭니다만, 실제로는 핵심이 되는 코드는 의외로 간단하다고 합니다. 원래는 유투브에서 파이썬으로 구현이 되어 있는 코드를 일단 C#으로 간단하게 구현해 보았습니다.

 

 

먼저 여기서는 관찰자가 될 클래스를 2개 만들어 놓고서, 여기다가 inferface를 붙여 주도록 합니다. 물론 각각의 관찰자인 옵져버 안에서는 Update라는 메서드가 작동될 것을 상정하고 만들어 주도록 합니다.

 

 

그리고 나서 여기가 핵심인데, 이 관찰자가 된 클래스를 리스트 형태로 일단 저장시켜 주도록 합니다. 이 작업을 하기 위해서 interface를 붙여 준 것이고, 이제 여기서 리스트 형식으로 저장을 한 다음에 이 관찰자를 호출하는 이밴트로 여기서는 notice로 두고, 이 메서드가 실행이 되면 일괄적으로 작동이 되도록 만들어 주도록 합니다.

 

 

마지막으로 위 스크린샷에서 볼 수 있는 것처럼 일단 Owner라는 클래스에 관찰자가 될 클래스 2개를 등록시켜 준다 - 리스트의 형태로 어떻게 보관해 주는 것을 볼 수 있습니다. 이렇게 하는 다음으로 모든 관찰자를 호출하면 이제 관찰자 안에 있는 신호가 발생해서 다른 데로 보낼 수 있을 듯 합니다.

 

 

이렇게 해서 간단하게 발동을 시키는 것을 확인할 수있었습니다. 다만 여러가지 부족한 점 - 관찰자 안에 있는 다른 관찰자 와 같은 것이 있기 때문에 아직 이걸로 100% 완성인 것인지는 모르겠습니다. 아무튼 일단 여기까지 오기는 왔습니다. 일단 이렇게 간단하게 정리를 하도록 하고, 이 관찰자 패턴은 도전과제 같은 것을 달성할 때나 실시간으로 전투로 인한 HP가 변동이 될 때 사용하면 좋을 듯 합니다.

반응형