블로그 이미지
Kanais
Researcher & Developer 퍼즐을 완성하려면 퍼즐 조각들을 하나 둘씩 맞춰나가야 한다. 인생의 퍼즐 조각들을 하나 둘씩 맞춰나가다 보면 인생이란 퍼즐도 완성되는 날이 오려나...?

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

2015. 5. 19. 11:35 Programming/.NET

작성날짜    : 2011-03-28


참고 : http://msdn.microsoft.com/ko-kr/library/ms173173(v=vs.80).aspx

 

인터페이스 대신 대리자를 사용해야 하는 경우

클래스 디자이너는 대리자 및 인터페이스를 통해 형식의 선언과 구현을 분리할 수 있습니다. 지정된 인터페이스는 임의의 클래스나 구조체에서 상속하고 구현할 수 있습니다. 메서드가 대리자의 메서드 시그니처에 맞으면 임의의 클래스에 대해 메서드의 대리자를 만들 수 있습니다. 인터페이스나 대리자 메서드를 구현하는 클래스에 대한 정보가 전혀 없는 개체에서 인터페이스 참조나 대리자를 사용할 수 있습니다. 대리자와 인터페이스에는 이와 같은 유사점이 있으며, 대리자와 인터페이스 중 어느 쪽을 사용할지 결정할 때는 다음과 같은 지침을 따라야 합니다.

 

다음과 같은 경우에는 대리자를 사용합니다.

  • 이벤트 디자인 패턴을 사용하는 경우
  • 정적 메서드를 캡슐화해야 하는 경우
  • 메서드를 구현하는 개체에 대한 다른 속성, 메서드 또는 인터페이스에 호출자가 액세스할 필요가 없는 경우
  • 쉽게 작성하려는 경우
  • 메서드에 대한 여러 구현이 클래스에 필요한 경우

다음과 같은 경우에는 인터페이스를 사용합니다.

  • 호출할 수 있는 관련 메서드의 그룹이 있는 경우
  • 클래스에 메서드의 구현이 하나만 필요한 경우
  • 인터페이스를 사용하는 클래스에서 이 인터페이스를 다른 인터페이스나 클래스 형식에 캐스팅하려는 경우
  • 비교 메서드의 경우와 같이 구현하려는 메서드가 클래스의 형식이나 동일성 여부와 관련되어 있는 경우

 

대리자 대신 단일 메서드 인터페이스를 사용하는 예로는 IComparable또는 IComparable을 들 수 있습니다. IComparable은 형식이 동일한 두 개체 사이의 보다 작음, 같음 또는 보다 큼 관계를 지정하는 정수를 반환하는  CompareTo 메서드를 선언합니다. 대리자 비교 메서드를 정렬 알고리즘의 기준으로 사용할 수도 있지만 IComparable을 정렬 알고리즘의 기준으로 사용하는 것이 더 좋습니다. 비교 기능은 클래스에 속한 것이고 비교 알고리즘은 런타임에 변경되지 않으므로 단일 메서드 인터페이스를 사용하는 것이 좋습니다.

'Programming > .NET' 카테고리의 다른 글

[.NET] Visual C# 2008 컴파일러 옵션  (0) 2015.05.19
[.NET] Assembly  (0) 2015.05.19
[.NET] Delegate (대리자)  (0) 2015.05.19
[.NET] is 와 as  (0) 2015.05.19
[.NET] 다형성  (0) 2015.05.19
posted by Kanais