Delegate와 Event의 차이
-
델리게이트
- 메소드를 참조하는 타입
- 메소드의 참조를 변수에 저장하고, 다른 메소드에 전달하거나 호출을 동적으로 할 수 있음.
-
이벤트
- 델리게이트 기반
- 특정 상황이 발생했을 때 이벤트를 구독하는 모든 메소드를 호출하는데 사용됨(멀티캐스트)
Delegate는 "이 메서드를 나중에 사용할거야"
Event는 "이 일이 발생하면 알려줄게 그럼 넌 이걸 해"
이벤트는 델리게이트의 상위 개념이다.
델리게이트는 메소드를 변수처럼 저장하고, 전달하고, 실행하는 기능이다.
반면에 이벤트는 델리게이트를 기반인데
특정 상황이 발생했을 때 이벤트를 구독하는 모든 메서드에게 신호를 보내는 시스템이다.
Delegete의 장단점
- 장점
- 유연성: 다양한 메소드를 동일한 델리게이트 변수에 할당 할 수 있음
- 코드 재사용 및 분리: 코드의 재사용성을 높이고, 컴포넌트간의 결합도를 낮춤
- 단점
- 복잡성: 과도한 사용은 코드의 복잡성이 증가할 수 있음
- 메모리 누수 위험: 해제를 꼼꼼히 하지 않으면 메모리 누수를 일으킴
Event의 장단점
-
장점
- 캡슐화: 외부에서 발생할 수 없어 안전한 코드가 가능
- 의사소통 강화: 컴포넌트 간 소통이 명확하여 가독성과 유지보수가 좋음
-
단점
- 이해도 요구: 이벤트 개념과 사용 방법을 이해하는데 시간이 소요도리 수 있음
- 오버헤드: 이벤트 시스템이 복잡해질수록 성능이 미치는 영향이 커짐