抽象型とインターフェイス
抽象型とインターフェイスは、どちらもプログラミングによる抽象化を指定するための機構です。 抽象化は、継承先または実装側が従う必要があるコントラクトを指定します。 抽象型により、実装の詳細を提供できます。インターフェイスでは、実装の詳細を提供できません。
抽象化を使用する具体的な実装と API を複数開発してテストしない限り、抽象化を提供しないようにします。
現実世界のシナリオでテストを行わずに抽象化をユーザーに提供した場合、修復が困難な、または修復できないデザイン上の問題が見逃されてしまう可能性が高くなります。その結果、将来のリリースにおいて互換性の問題が発生することがあります。
抽象化をデザインするときは、抽象クラスまたはインターフェイスを慎重に選択します。
抽象型またはインターフェイスの選択の詳細については、「クラスまたはインターフェイスの選択」を参照してください。
抽象化を具体的に実装するためのリファレンス テストを提供することを検討します。 このテストにより、ユーザーは、実装によってコントラクトが正しく実装されるかどうかを確認できます。
リファレンス テストとは、インターフェイスが正しく実装されていることを確認するためのテストです。 たとえば、ICollection<T> のテストでは、インターフェイスを実装しているインスタンスで Add メソッドを 2 回呼び出したときに Count プロパティの値が 2 だけ増加することを確認できます。
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。