When to Use Delegates Instead of Interfaces

来源:互联网 发布:购物资讯类 建站 编辑:程序博客网 时间:2024/05/16 13:05

Both delegates and interfaces enable 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 be 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 that has 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 it use an interface?

Use a delegate in the following circumstances:

  • An eventing design pattern is used.

  • It is desirable to encapsulate a static method.

  • The caller has no need to 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 in the following circumstances:

  • There is 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.

原创粉丝点击