抽象类设计

更新:2007 年 11 月

任何情况下,抽象类都不应进行实例化,因此,正确定义其构造函数就非常重要。确保抽象类功能的正确性和扩展性也很重要。下列准则有助于确保抽象类能够正确地设计并在实现后可以按预期方式工作。

不要在抽象类型中定义公共的或受保护的内部(在 Visual Basic 中为 Protected Friend)构造函数。

具有 public 或 protected internal 可见性的构造函数用于能进行实例化的类型。任何情况下抽象类型都不能实例化。

应在抽象类中定义一个受保护构造函数或内部构造函数。

如果在抽象类中定义一个受保护构造函数,则在创建派生类的实例时,基类可执行初始化任务。内部构造函数可防止抽象类被用作其他程序集中的类型的基类。

对于您提供的每个抽象类,至少应提供一个具体的继承类型。

这样有助于库设计者在设计抽象类时找到问题所在。同时意味着开发人员在进行高级别开发时,即使不了解抽象类和继承,也可以使用具体类而不必学习这些概念。例如,.NET Framework 提供抽象类 WebRequest 向统一资源标识符发送请求,使用 WebResponse 接收统一资源标识符的回复。Framework 提供了 HttpWebRequestHttpWebResponse 类,分别作为这两个抽象类的几个具体实现之一,它们是相应抽象类的 HTTP 特定的实现。

部分版权所有 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 库的约定、术语和模式》)。

请参见

概念

在类和接口之间选择

其他资源

类型设计准则

类库开发的设计准则