대리자 대 인터페이스
대리자로 풀 수 있는 문제는 인터페이스로도 해결이 가능하다.
그럼 어떨 때 대리자를 쓰는 게 더 효율적일까?
내가 보는 책에서는 3가지 정도의 예시를 보여주고 있다.
-
인터페이스가 메서드를 하나만 정의할 때
-
다중 캐스팅 능력이 필요하다.
-
여러 종류의 메서드를 인터페이스를 여러 번 구현해야 한다.
하나씩 살펴보자.
1. 인터페이스가 메서드를 하나만 정의할 때 & 3. 여러 종류의 메서드를 인터페이스를 여러 번 구현해야 한다
위 예시처럼 ITransformer인터페이스는 메서드를 하나만 가지고 있다. 이럴 경우 왜 델리게이트 더 좋냐면, 인터페이스 같은 경우 하나의 클래스에서는 하나의 메서드만 넘길 수 있는 반면에 델리게이트로 구현하게 되면 다른 메서드(int로 반환하는 메서드) 면 어떠한 메서드도 넘길 수 있기 때문이다.
델리게이트로 하면 Square 1도 되고~ Square2되지만
인터페이스로는
각각 클래스에 인터페이스를 상속받아넘겨야 한다.
2. 다중 캐스팅 능력이 필요하다.
하나의 대리자 인스턴스가 여러 개의 메서드를 지칭할 수 있는 델리게이트 기능이 필요하다면. 예를 들어
예시가 너무 구린데 암튼 이런 식으로 쓸 거라면 델리게이트 고고.
'프로그래밍언어 > C#' 카테고리의 다른 글
2020317[C#] Using문 / Dispose (0) | 2020.03.17 |
---|---|
2020315[C#] Try문과 예외 / finally블록 (0) | 2020.03.15 |
2020310[C#] 대리자(delegate) (0) | 2020.03.10 |
20200228[C#] 제네릭 형식의 파생 / 자신을 참조하는 제네릭 형식 (0) | 2020.02.28 |
20200225[C#] 제네릭 제약_2 (0) | 2020.02.25 |