옵저버 패턴의 이해

Unity를 이용해서 개발할 때는 컴포넌트를 분리하는 방법을 찾는 것을 최우선의 목표로 한다.

그러나 Unity는 다양한 API와 인스펙터를 통해 컴포넌트를 직접 참조할 수 있게 한다. 이러한 유연성에는 비용이 필요할 수도 있으며 참조가 누락되어 코드를 취약하게 만든다.

옵저버 패턴은 관찰자들을 관리하며 관찰하는 객체의 상태에 변화가 있을 때마다 각 관찰자에게 통보하는 방식으로 커플링을 느슨하게 만드는 패턴이다.

옵저버 패턴은 Unity의 관용적인 패턴 중 이벤트 버스 패턴과 유사하지만 큰 차이가 있다.

옵저버 패턴의 장점

  1. 관찰 대상의 상태가 변하는 것을 체크하기 위해 폴링할 필요가 없다.

    옵저버 패턴을 사용하지 않는다면 관찰 대상의 상태가 변하는 것을 체크하기 위해 Update()를 통해서 관찰 대상의 상태를 매번 체크해야만 한다.

  2. 관찰 대상의 코드를 변경하지 않고도 관찰자를 추가하거나 삭제할 수 있다.

    관찰자가 추가되거나 삭제되는 경우 관찰 대상의 코드를 변경할 필요없이 관찰자를 구독시키거나 구독 취소를 시키면 된다. 이는 SOLID 원칙 중 OCP를 준수한다.