将接口成员定义为类或其接口等效项是否更好

本文关键字:接口 是否 更好 成员 定义 | 更新日期: 2023-09-27 18:31:30

在接口定义中,声明所需类或接口等效类型的成员是否更好?例如,假设我们有一个名为 IFoo 的接口,该接口由类实现 Foo .如果我们声明另一个接口IBar,并且我们需要 *Foo 事物的表示IBar哪个更好?

interface IBar { 
    IFoo member { get; set; }  // interface
}

或。。。

interface IBar { 
    Foo member { get; set; }   // class
}

这两个阵营似乎都有同样有效的论据。你有什么想法?

将接口成员定义为类或其接口等效项是否更好

使用接口可以更轻松地将初始实现换成新实现 - 无需更新引用,因为它们处理接口提供的抽象。它还可以帮助您进行单元测试,因为您可以根据界面轻松模拟。

一个常见示例,如果使用接口,代码会更灵活,则 IList 是。

接口不仅提供了更大的灵活性,还允许您构建更好的抽象。

它还会迫使你思考这样的事情 - 如果类实现了多个接口,那么你必须知道哪种抽象(接口)最合适,作为其他接口定义的一部分。