델리게이트란.
'메서드를 참조하는 대리자' 정도로 생각할 수 있다.
단, 델리게이트가 대신하는 메서드는 리턴타입과 매개변수가 모두 일치해야한다.
<델리게이트 문법>
사용1. 콜백
참고. 콜백이란?
중간에 특정부분 빼고 반복되는 함수를 한번에 유연하게 처리하기 위해서 사용해줄 수 있다.
그 특정 부분을 델리게이트가 수행해주게끔 하는 것
(계속해서 함수 내부 부분을 수정하거나 추가해서 사용하게 되면 개방.폐쇄 원칙에 위배된다.
개방.폐쇄 원칙 : 확장에는 개방/수정에는 폐쇄되도록 하는 원칙)
즉, 리턴타입과 매개변수가 같다면 델리게이트를 사용해 중간의 내용을 바꿔가면서 나머지는 반복되는 함수를 유연하게 처리할 수 있다는 것.
(이 용도는 델리게이트 사용 용도 중 하나일뿐)
사용2. 체인
델리게이트 하나가 여러개의 체인을 동시에 참조하는 것.
기능을 추가하거나 빼줄 수 있다.
>> 어떤 특정한 상황에서 여러 처리를 한번에 할 때 유용
사용 예시)
몬스터의 Hp가 변할 때마다 생기는 다양한 처리들을 델리게이트로 묶어줄 수 있다.
start()에서 onReduceHp 델리게이트에 두가지 기능을 추가시켜놨다.
hp가 변할때마다 저 기능들이 수행되는 것.
그리고 특정상황 (여기서는 besekerzone안에 들어와있을 때)에서
특정기능을 추가시켜주거나 제외시켜줄 수 있다.
이렇게 해줄 경우 장점
각각 클래스의 의존성(결합성)이 줄어든다.
기능을 추가해주거나 수정해줄 때 더 간편하고 그럴 때마다 의존성을 높이지 않을 수 있다.
'C# > C# 학습 (TIL)' 카테고리의 다른 글
C# 디자인패턴 : 전략패턴 (0) | 2022.06.20 |
---|---|
C# 중급문법 Day5 Action / Func / event / 람다 (0) | 2022.06.20 |
C# 중급문법 DAY3 싱글톤의 일반화 (0) | 2022.06.16 |
C# 중급문법 DAY1 추상클래스/인터페이스/콜렉션/foreach/var/object (0) | 2022.06.15 |
C# 중급문법 DAY2 확장메서드 /일반화(where T :)/ 딥카피/ 싱글톤 일반화 (0) | 2022.06.15 |