標準コンテナはサブクラス化または継承すべきですか?
標準のサブクラス化または継承の実践に関するオンライン フォーラムでの質問によく遭遇します。コンテナ。このアプローチはコンテナの機能を拡張するには便利に見えるかもしれませんが、検討に値する懸念が生じます。
標準コンテナのサブクラス化が推奨されない理由
-
仮想の欠如デストラクター: 標準コンテナーには仮想デストラクターがありません。これは、それらを多態的に使用すると、派生クラスで潜在的なクリーンアップの問題が発生する可能性があることを意味します。
-
設計原則の違反: コンテナーのサブクラス化はカプセル化を損ない、汎用的に適用可能なアルゴリズムを通じて機能を拡張するという基本原則に違反します。
-
拡張の制限事項動作: 継承は、クラスの動作を拡張するための主要な方法であってはなりません。このアプローチは、拡張機能をインターフェース コントラクトにバインドするため、将来の変更が複雑になります。
より適切なアプローチ
標準コンテナをサブクラス化する代わりに、以下を検討してください。
-
外部アルゴリズム:コンテナ上で動作する汎用アルゴリズムを実装します。このアプローチにより、柔軟性が向上し、コードの重複が削減されます。
-
コンテインメント: クラス内のコンテインメントを利用して、特定の不変条件を強制したり、コンテナとは独立した新しい動作を追加します。
-
構成: 可能な場合は常に、継承ではなく構成を選択します。これにより柔軟性が高まり、派生クラスに幅広い動作を含めることが可能になります。
以上が標準コンテナをサブクラス化する必要がありますか、それとも代わりに合成とアルゴリズムを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。