抽象类设计

注意

此内容根据 Pearson Education, Inc. 许可转载自《框架设计指南:可重用 .NET 库的约定、习语和模式第二版》。 该版本于 2008 年出版,并在此后于第三版对该书进行了全面修订。 此页上的一些信息可能已过时。

❌ 请勿在抽象类型中定义公共或受保护的内部构造函数。

只有在用户需要创建类型的实例时,构造函数才应该是公共的。 由于你无法创建抽象类型的实例,因此具有公共构造函数的抽象类型设计不正确,会引起用户的误解。

✔️ 请务必在抽象类中定义一个受保护的或内部的构造函数。

受保护的构造函数更常见,在创建子类型时,它仅允许基类进行自己的初始化。

内部构造函数可用于将抽象类的具体实现限制为定义该类的程序集。

✔️ 请务必提供至少一种从你交付的每个抽象类继承的具体类型。

这样做有助于验证抽象类的设计。 例如,System.IO.FileStreamSystem.IO.Stream 抽象类的一个实现。

Portions © 2005, 2009 Microsoft Corporation 版权所有。 保留所有权利。

在 Pearson Education, Inc. 授权下,由 Addison-Wesley Professional 作为 Microsoft Windows 开发系列的一部分再版自 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition(Framework 设计准则:可重用 .NET 库的约定、惯例和模式第 2 版),由 Krzysztof Cwalina 和 Brad Abrams 发布于 2008 年 10 月 22 日。

请参阅