接口设计

接口定义实施者必须提供的一组成员的签名。 接口不能提供成员的实现细节。 例如,ICollection 接口定义与使用集合相关的成员。 实现该接口的每个具体类都必须提供这些成员的实现细节。 虽然类只能从单个类继承,但可以实现多个接口。 下面的准则有助于确保正确设计接口。

如果一组包含某些值类型的类型需要支持某些常用功能,则必须定义接口。

值类型必须从 ValueType 继承。 因此,抽象类不能用于指定值类型的协定;而必须改用接口。

如果从某些其他类型继承的类型需要支持其功能,则考虑定义接口。

避免使用标记接口(没有成员的接口)。

自定义特性提供了一种标记类型的方式。 有关自定义特性的更多信息,请参见 编写自定义特性。 如果可以将特性检查推迟到执行代码时才进行,则首选自定义特性。 如果需要进行编译时检查,则不能使用此准则。

请提供至少一种接口实现的类型。

这样有助于确保正确设计和顺利实现接口。 Int32 类提供 IComparable 接口的一个实现。

对于定义的每个接口,请提供至少一个使用该接口的成员(例如,采用该接口作为参数的方法,或类型化为接口的属性)。

这是另一种有助于确保正确设计和顺利使用接口的机制。

不要向以前提供的接口添加成员。

添加新成员需要修改实现以前版本的接口的代码。 这就是为什么在可能的情况下,通常首选使用类而不是接口的主要原因之一。 有关更多信息,请参见在类和接口之间选择

如果接口的交付定义要求更多成员,则可以实现新的接口和使用该接口的适当成员。

部分版权所有 2005 Microsoft Corporation。 保留所有权利。

部分版权所有 Addison-Wesley Corporation。 保留所有权利。

设计指引的详细信息,请参阅"框架设计准则: 公约、 成语和可重复使用的模式。网络图书馆"书 Krzysztof Cwalina 和布拉德 · 艾布拉姆斯,2005年艾迪生 - 韦斯利,发表。

请参见

概念

在类和接口之间选择

其他资源

类型设计准则

类库开发的设计准则