更新:2007 年 11 月
抽象类型和接口是用于指定编程抽象的两种机制。抽象指定继承者或实施者必须遵循的一个协定。抽象类型可以选择提供实现的详细信息;而接口不能提供实现的任何详细信息。
除非通过开发若干使用抽象的具体实现和 API 对抽象进行了测试,否则不要提供抽象。
如果在实际方案中未对抽象进行测试就提供了抽象,将很有可能遗漏一些设计问题;而且,对这些问题的修复很可能甚至必然导致在以后的版本中引入兼容性问题。
在设计抽象时,则要在抽象类与接口之间谨慎选择。
有关选择抽象类型还是接口的详细讨论,请参见在类和接口之间选择。
考虑为抽象的具体实现提供引用测试。通过这样的测试,用户应可以测试出抽象的实现是否正确地履行了协定。
通过引用测试,可以验证是否正确实现了某一接口。例如,对 ICollection<T> 进行的测试可以验证:在对实现该接口的实例两次调用 Add 方法后,Count 属性是否增加 2。
部分版权所有 2005 Microsoft Corporation。保留所有权利。
部分版权所有 Addison-Wesley Corporation。保留所有权利。
有关设计指南的更多信息,请参见 Krzysztof Cwalina 和 Brad Abrams 编著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(《框架设计指南:可重用 .NET 库的约定、术语和模式》)。