728x90
이벤트를 발생시키는 게시자는 구독자가 해당 이벤트를 어떻게 처리할 것인지 알 필요가 없습니다. 단지 구독자가 미리 등록해 놓은 함수(Function)들의 목록에 따라 호출하기만 하면 됩니다.
이벤트를 처리하는 구독자는 계속해서 게시자의 행동을 검사(Check)하지 않아도 됩니다. 이벤트가 발생하는 시점을 알기 위해 노력할 필요가 없고, 이벤트가 발생했을 때 호출될 메서드(Method)만 등록하면 됩니다. 이것은 구독자가 기다리고 있는 어떤 상황(Event)이 실제로 발생하면, 그 즉시 게시자가 알아서 구독자의 이벤트 처리 함수를 호출해주기 때문입니다. 따라서 구독자는 이벤트가 발생했을때 어떻게 처리할지에 대해서만 집중할 수 있게 됩니다.
이벤트 게시자와 구독자의 구조를 잘 활용하면, 서로의 상태를 검사하고 처리하는 과정에서 만들어지는 「스파게티 코드(Spaghetti Code)」를 방지하고, 간결한 코드를 유지할 수 있으며, 유지 보수에 도움이 됩니다. 스파게티 코드란 프로그램의 제어 흐름이 마치 스파게티 면발처럼 엉키고 얽혀있는 상태를 이야기합니다.
요약 : 함수로 직접호출을 한다면 모든 객체를 이벤트 생성 시점에 모두 생성해야한다. 이벤트를 사용하면 객체를 생성할 필요없이 구독하고있는 모든 객체의 특정 행위를 동작시킬 수 있다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pxkey&logNo=221365266629
728x90
'VisualStudio > C#' 카테고리의 다른 글
[C#] 명시적 형변환 && 암시적 형변환 (0) | 2022.08.22 |
---|---|
[C#] StringBuilder VS StringBuffer (0) | 2022.08.22 |
[C#] Task async awiat (0) | 2022.08.10 |
[C#] 동기와 비동기 개념 (0) | 2022.08.10 |
[C#] 콜백 함수와 델리게이트 (0) | 2022.08.10 |