-
이벤트게임 개발 학원/C# 2024. 3. 11. 17:16반응형
일련의 사건이 발생했다는~ 사실을 다른 객체한테 전달
1. 델리게이트 선언
2. 클래스 내에서 선언한 델리게이트 인스턴스를 event 한정자로 선언
3. 이벤트 핸들러 작성 (이벤트 핸들러는 선언한 델리게이트와 일치하는 메소드면 OK)
4. 클래스의 인스턴스를 생성하고 이 객체의 이벤트에 이벤트 핸들러 등록
5. 이벤트가 발생하면 이벤트 핸들러가 호출---------------------------------------------------------------------------------------------------------------------------------------------
Delegate의 장단점 (직접적인 호출 가능)
장점
- 유연성 : 다양한 메소드를 동일한 델리게이트 변수에 할당 할 수 있음
- 코드 재사용 및 분리 : 코드의 재사용을 높이고, 컴포넌트간의 결합도를 낮춤
단점
- 복잡성 : 과도한 사용은 코드의 복잡성이 증가할 수 있음
- 메모리 누수 위험 : 해제를 꼼꼼히 하지 않으면 메모리 누수를 일으킴
Event의 장단점 (직접적인 호출 불가능)
장점
- 캡슐화 : 외부에서 발생할 수 없어 안전한 코드가 가능(은닉성 보장)
- 의사소통 강화 : 컴포넌트 간 소통이 명확하여 가독성과 유지보수가 좋음
단점
- 오버헤드 : 이벤트 시스템이 복잡해질수록 성능이 미치는 영향이 커짐
-------------------------------------------------------------------------------------------------------------------------------------------------------------
이벤트는 interce 내부에서 선언 , | 델리게이트는 선언 불가능
이벤트는 클래스 외부에서 호출불가 (public 이여도 불가) | 델리게이트는 외부에서 호출 가능
객체가 일련의 사건이 발생한 경우에만 내부에서 이벤트 발생 보장 가능 | 사건이 발생하지 않아도 이벤트 발생 가능
이벤트는 직접적인 호출이 불가능, | 델리게이트는 직접적인 호출 가능
이벤트는 객체의 상태변화, 사건의 발생을 알리는 용도, | 델리게이트는 delegate : callback용도로,
이벤트는 대입 연산 x, | 델리게이트는 대입 연산 o,
객체들의 상황을 온전하게 유지가능 | 기존의 이벤트에 반응할 객체들이 초기화
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Event에 Event 핸들러를 등록해야 가능 += , -=
+= : 이벤트에 반응할 객체의 추가할 함수 -> 참조 추가
-= : 이벤트에 반응할 객체의 제거할 함수 -> 참조 제거----------------------------------------------------------------------------------------------------------------------------------------------------------------
반응형