次の方法で共有


抽象クラスのデザイン

抽象クラスはインスタンス化できないため、コンストラクターを正しく定義する必要があります。 また、抽象クラスの機能が正しく、容易に拡張できるようにすることも重要です。 次のガイドラインは、抽象クラスが正しくデザインされており実装した場合に期待どおり機能することを確かめるうえで役立ちます。

抽象型では、public または protected internal (Visual Basic では Protected Friend) コンストラクターを定義しないでください。

public または protected internal の参照範囲を持つコンストラクターは、インスタンス化できる型で使用します。 抽象型はインスタンス化できません。

抽象クラスでは、protected コンストラクターまたは internal コンストラクターを定義してください。

抽象クラスで protected コンストラクターを定義すると、派生クラスのインスタンスを作成する際、基本クラスがインスタンス化タスクを実行できるようになってしまいます。 internal コンストラクターは、抽象クラスと同じアセンブリ内に存在しない型の基本クラスとして抽象クラスが使用されるのを妨げます。

提供する抽象クラスごとに、これを継承する具体的な型を 1 つ以上用意してください。

このようにすると、ライブラリのデザイナーは抽象クラスのデザインの問題点や不備を見つけやすくなります。 また、抽象クラスや継承について理解していないような開発者でも、このような概念を学習せずに具体的なクラスを使用できます。 たとえば、.NET Framework には、URI (Uniform Resource Identifier) への要求の送信や、URI からの応答の受信を処理する抽象クラス WebRequest および WebResponse が用意されています。 これらの抽象クラスの具体的な実装として、Framework には HttpWebRequest クラスと HttpWebResponse クラスが含まれています。これらは抽象クラスの HTTP 固有の実装です。

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。

参照

概念

クラスまたはインターフェイスの選択

その他の技術情報

型のデザインのガイドライン

クラス ライブラリ開発のデザイン ガイドライン