디자인 패턴/디자인 패턴

[디자인 패턴] - 옵저버(이벤트) (Observer) 패턴

MuscleDeveloper5683 2025. 2. 24. 19:13
728x90
SMALL

 

🔹 옵저버 패턴이란?

옵저버 패턴은 발행자(Publisher, Subject)와 구독자(Subscriber, Observer) 간의 관계를 정의하는 패턴이다.

  • 발행자(Subject): 특정 이벤트가 발생하면 이를 구독자(Observer) 에게 알림을 보낸다.
  • 구독자(Observer): 발행자의 이벤트를 감지하고, 이에 따라 특정 로직을 실행한다.

 

- 객채 간의 일대다 의존 관계를 정의하여 어떤 객체의 상태가 변경될 때, 그 객체에 의존하는 다른 객체들이 자동으로 업데이트 되도록 하는 패턴이다. 

- 주로 이벤트 처리 시스템 사용된다.

 

 

사용 예시 : 체력 변화 감지, UI 업데이트, 이벤트 시스템

 

✅ 장점

느슨한 결합: 서로 직접 참조하지 않고 독립적으로 동작 가능
확장성: 새로운 옵저버를 추가하는 것이 용이
이벤트 기반 프로그래밍: UI 업데이트, 상태 변화 감지 등에 적합

❌ 단점

구독 해제 관리 필요: 메모리 누수를 방지하기 위해 OnDisable() 등에서 이벤트 해제해야 함
디버깅 어려움: 이벤트가 어디에서 호출되고 있는지 추적하기 어려울 수 있음
퍼포먼스 이슈: 너무 많은 옵저버가 있을 경우 성능 저하 가능

 

쉬운 설명 그림

 

 

 

1. C# 이벤트와 델리게이트(delegate) 활용

 

 

 

 

결과

 

 

 

옵저버 패턴 동작 그림

 

 

 

 

 

2. C# 인터페이스를 활용한 옵저버 패턴

 

옵저버 인터페이스와, 발행자(Subject) 구현

 

 

 

 

 

알림을 받을 구독자들 구현

 

UI 매니저 Audio 매니저 Game 로그

 

 

 

실행할 스크립트 구현

 

 

 

 

결과

 

728x90