次の方法で共有


抽象化の実装用の基本クラス

抽象化の実装用の基本クラスは、抽象クラスや抽象インターフェイス (抽象化) の実装を支援するためのクラスです。 このクラスは、抽象化の実装に関する詳細の一部を提供し、場合によっては継承なしに使用できます。 たとえば、Collection<T> は、コレクションを作成するために使用したり、厳密に型指定されたコレクション クラスを定義するために継承したりできます。

Collection<T> クラスを使用して厳密に型定義されたコレクション オブジェクトを作成する方法を次のコード例に示します。

Public Class PointManager
    Implements IEnumerable

    Private pointCollection As Collection(Of Point) = New Collection(Of Point)

    Public Sub AddPoint(ByVal p As Point)
        pointCollection.Add(p)
    End Sub

    Public Function RemovePoint(ByVal p As Point) As Boolean
        Return pointCollection.Remove(p)
    End Function

    Public Function GetEnumerator() As IEnumerator _
        Implements IEnumerable.GetEnumerator

        Return pointCollection.GetEnumerator
    End Function
End Class
public class PointManager : IEnumerable
{
    Collection<Point> pointCollection = new Collection<Point>();

    public void AddPoint(Point p)
    {
        pointCollection.Add(p);
    }
    public bool RemovePoint(Point p)
    {
        return pointCollection.Remove(p);
    }
    public IEnumerator GetEnumerator()
    {
        return pointCollection.GetEnumerator();
    }
}

Collection<T> クラスを使用して厳密に型定義されたコレクションを定義する方法を次のコード例に示します。

Public Class PointCollection
    Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}

CollectionBase も .NET Framework 基本クラスの 1 つです。 これは、非ジェネリック コレクションの実装に役立ちます。 Collection<T> と違って、CollectionBase は直接使用できません。

抽象化の実装用の基本クラスをライブラリの一部として提供するのは、ライブラリを使用する開発者にとっての付加価値が高まる場合に限定する必要があります。 基本クラスがライブラリを実装する際にしか役立たない場合は、基本クラスをパブリックに参照可能にしないでください。 基本クラスを内部で使用してライブラリの開発を簡素化するには、パブリック メンバーは、基本クラスを継承する代わりに基本クラスに機能を委ねる必要があります。

基本クラスに抽象メンバーが含まれていない場合でも、基本クラスを抽象化することを検討してください。 これにより、基本クラスが継承専用としてデザインされていることがユーザーに明確に伝わります。

基本クラスは、メイン シナリオ API とは別個の名前空間に配置することを検討してください。 もとより基本クラスは、高度な機能拡張シナリオを対象としており、大多数のユーザーには関係ありません。

基本クラスをパブリック API で使用する場合は、その名前に Base というサフィックスを含めないでください。

ライブラリが基本クラスを戻り値の型またはパラメーターの型として公開している場合、その基本クラスには、Base というサフィックスを付けないでください。

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

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

参照

その他の技術情報

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

機能拡張のデザイン