객체 간의 직접적인 결합을 피하면서 특정 사건의 발생을 알리는 효율적인 신호 전달 체계, 델리게이트(Delegate)와 이벤트(Event) 메커니즘을 분석한다.
델리게이트: 메서드 참조의 타입화
델리게이트는 특정 시그니처를 가진 메서드를 안전하게 담을 수 있는 변수와 같다.
이를 통해 로직 자체를 파라미터처럼 주고받는 유연한 프로그래밍이 가능하다.
이벤트: 캡슐화된 알림 장치
이벤트는 델리게이트를 기반으로 하되, 외부에서 직접 호출하는 것을 방지하고 오직 구독(+=)과 해제(-=)만 허용하는 보호 장치다.
클래스의 상태 변화를 안전하게 외부에 알리는 용도로 사용된다.
발행-구독 (Pub-Sub) 구조의 이점
발행자는 구독자가 누구인지 몰라도 신호를 송신할 수 있다.
이러한 느슨한 결합은 기능 추가 및 수정 시 상호 영향력을 최소화하여 시스템의 확장성을 비약적으로 높인다.
P.S
델리게이트와 이벤트는 비동기 처리나 UI 동작 정의에 필수적인 메커니즘이다.
객체 간의 유기적인 상호작용을 위해 이 기술을 적재적소에 활용하는 설계 능력이 필요하는 것 같다.