なぜ一般的にList<T>
カスタムコレクションを作成するのに便利に思われますが、List<T>
から継承することはいくつかの重要な欠点を示します。
パフォーマンスの懸念事項:
は、パフォーマンスのために高度に最適化されています。継承は、これらの最適化を不注意に混乱させ、実行を遅くする可能性があります。
List<T>
のパブリックメソッドの継承は、実装の詳細を公開し、特にパブリックAPIを作成する場合、将来の変更の柔軟性を軽減します。
List<T>
剛性と限定的な拡張性:
の汎用性は、カスタムコレクションの特定の要件と衝突する場合があります。 継承は、ユニークな機能や行動に対応できない柔軟性のないデザインを作成できます。
より良い代替案:List<T>
Microsoftは、より適切なベースクラスとしてを提案しますが、機能が豊富な出発点を提供します。
相続財産上の構成:Collection<T>
インスタンスをカプセル化します。これにより、元のパフォーマンスや動作を損なうことなく機能が拡張されます。
カスタム構造を効果的にモデリングする:List<T>
List<T>
カスタム構造を「装飾リスト」と見なす代わりに、それを明確なエンティティとして扱います。そのコアプロパティと動作を定義し、それらを直接モデル化します。
継承の許容可能なシナリオ:
から継承することが正当な状況が限られています:
既存の機能の拡張:
カスタムソートメソッドの追加などList<T>
ドメイン固有のコレクション:
以上がなぜリストから継承を避ける必要があるのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。