Dotnetfreaks' Blog | Dotnetfreaks' Blog - When to Use Delegates Instead of Interfaces

Dotnetfreaks' Blog

Fabulous Adventures In DotNet

About the author

Author Name is someone.
E-mail me Send mail

Recent posts

Recent comments

Archive

Tags

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

When to Use Delegates Instead of Interfaces


Both delegates and interfaces allow a class designer to separate type declarations and implementation. A given interface can be inherited and implemented by any class or struct; a delegate can created for a method on any class, as long as the method fits the method signature for the delegate. An interface reference or a delegate can be used by an object with no knowledge of the class that implements the interface or delegate method. Given these similarities, when should a class designer use a delegate and when should they use an interface?

Use a delegate when:

  • An eventing design pattern is used.

  • It is desirable to encapsulate a static method.

  • The caller has no need access other properties, methods, or interfaces on the object implementing the method.

  • Easy composition is desired.

  • A class may need more than one implementation of the method.

Use an interface when:

  • There are a group of related methods that may be called.

  • A class only needs one implementation of the method.

  • The class using the interface will want to cast that interface to other interface or class types.

  • The method being implemented is linked to the type or identity of the class: for example, comparison methods.

One good example of using a single-method interface instead of a delegate is IComparable or IComparable. IComparable declares the CompareTo method, which returns an integer specifying a less than, equal to, or greater than relationship between two objects of the same type. IComparable can be used as the basis of a sort algorithm, and while using a delegate comparison method as the basis of a sort algorithm would be valid, it is not ideal. Because the ability to compare belongs to the class, and the comparison algorithm doesn’t change at run-time, a single-method interface is ideal.

 

Extracted from Microsoft Technet articles.




Posted by Ajander Singh on Wednesday, March 31, 2010 5:34 PM
Permalink | Comments (0) | Post RSSRSS comment feed
Comments are closed