Event

램해·2026년 1월 22일

프로그램에서 하나의 상태 변화가 여러 시스템에 전달되어야 할 때,
각 기능을 직접 호출하는 방식은 코드 간의 결합도를 높이고 구조를 복잡하게 만듭니다.

C#의 Event는 이러한 문제를 해결하기 위한 구독 기반 알림 구조입니다.
어떤 일이 발생했는지를 알려주는 쪽과, 그 신호에 반응하는 쪽을 분리하는 역할을 합니다.

이 구조에서
이벤트를 선언한 객체는 누가 반응하는지 알 필요가 없고,
구독한 객체는 언제 이벤트가 발생하는지만 알면 됩니다.

즉, 시스템 간의 연결을 직접 호출이 아니라 신호 전달 방식으로 바꾸는 것이 Event의 핵심 개념입니다.

이벤트는 보통 다음과 같은 흐름으로 동작합니다.

이벤트 선언 → 이런 일이 발생할 수 있다는 신호를 정의합니다.

구독(Subscribe) → 다른 로직이 해당 이벤트에 반응하도록 등록합니다.

호출(Invoke) → 실제로 이벤트가 발생했을 때, 등록된 모든 로직이 실행됩니다.

이 구조를 사용하면, UI, 사운드, 이펙트, 로그 시스템처럼 서로 다른 기능들이
하나의 상태 변화에 동시에 반응할 수 있습니다.

예를 들어, 게임에서 피버 타임이 시작되었을 때 UI는 표시되어야 하고, 사운드는 재생되어야 하며, 이펙트도 함께 출력되어야 할 수 있습니다.

이때 각각을 직접 호출하는 대신, “이벤트가 시작되었다”는 이벤트 하나만 발생시키면
모든 시스템이 같은 신호에 반응하게 됩니다.

0개의 댓글