抽象クラスのデザイン

Note

このコンテンツは、Pearson Education, Inc. の許可を得て、『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition (フレームワーク設計ガイドライン: 再利用可能な .NET ライブラリの規約、表現形式、およびパターン、第 2 版)』から転載されています。 この版は 2008 年に出版され、その後、この本は第 3 版で全面的に改訂されました。 このページの情報の一部は古くなっている可能性があります。

❌ 抽象型では、パブリックの、または保護された内部コンストラクターを定義しないでください。

ユーザーがその型のインスタンスを作成する必要がある場合にのみ、コンストラクターをパブリックにする必要があります。 抽象型のインスタンスは作成できないため、パブリック コンストラクターのある抽象型は不適切な設計になり、ユーザーの誤解を招きます。

✔️ 抽象クラスでは、保護されたコンストラクターまたは内部コンストラクターを定義します。

保護されたコンストラクターの方が一般的であり、サブタイプの作成時に基底クラスによる独自の初期化の実行を許可するだけです。

内部コンストラクターを使用すると、抽象クラスの具象実装を、クラスを定義するアセンブリに制限できます。

✔️ 出荷する各抽象クラスから継承される具象型を少なくとも 1 つ提供します。

これにより、抽象クラスの設計を検証できます。 たとえば、System.IO.FileStreamSystem.IO.Stream 抽象クラスの実装です。

Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

2008 年 10 月 22 日に Microsoft Windows Development シリーズの一部として、Addison-Wesley Professional によって発行された、Krzysztof Cwalina および Brad Abrams による「Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition」 (フレームワーク デザイン ガイドライン: 再利用可能な .NET ライブラリの規則、用法、パターン、第 2 版) から Pearson Education, Inc. の許可を得て再印刷されています。

関連項目