대리자 대 인터페이스

대리자로 풀 수 있는 문제는 인터페이스로도 해결이 가능하다.

 

 

그럼 어떨 때 대리자를 쓰는 게 더 효율적일까?

내가 보는 책에서는 3가지 정도의 예시를 보여주고 있다.

  1. 인터페이스가 메서드를 하나만 정의할 때

  2. 다중 캐스팅 능력이 필요하다.

  3. 여러 종류의 메서드를 인터페이스를 여러 번 구현해야 한다.

하나씩 살펴보자.

 

1. 인터페이스가 메서드를 하나만 정의할 때 & 3. 여러 종류의 메서드를 인터페이스를 여러 번 구현해야 한다

위 예시처럼  ITransformer인터페이스는 메서드를 하나만 가지고 있다. 이럴 경우 왜 델리게이트 더 좋냐면, 인터페이스 같은 경우 하나의 클래스에서는 하나의 메서드만 넘길 수 있는 반면에 델리게이트로 구현하게 되면 다른 메서드(int로 반환하는 메서드) 면 어떠한 메서드도 넘길 수 있기 때문이다.

델리게이트로 하면  Square 1도 되고~ Square2되지만

 

인터페이스로는

각각 클래스에 인터페이스를 상속받아넘겨야 한다.

 

2. 다중 캐스팅 능력이 필요하다.

하나의 대리자 인스턴스가 여러 개의 메서드를 지칭할 수 있는 델리게이트 기능이 필요하다면. 예를 들어 

예시가 너무 구린데 암튼 이런 식으로 쓸 거라면 델리게이트 고고.

 

 

+ Recent posts