Interface Segregation Principle (ISP) は、多くのクライアント固有のインターフェイスが 1 つの汎用インターフェイスよりも優れていると述べています。何でこれが大切ですか?
7 に答える
ISP は次のように述べています。
クライアントは、使用しない方法に依存することを余儀なくされるべきではありません。
ISP は、重要な特性である結合と結合に関連しています。
理想的には、コンポーネントは高度に調整されている必要があります。コードの堅牢性と保守性が向上します。
ISP を強制すると、次のボーナスが得られます。
ソフトウェア設計の原則について詳しく知りたい場合は、アジャイル ソフトウェア開発、原則、パターン、およびプラクティスの本を入手してください。
1 つのクライアントが使用するインターフェイスを簡素化し、必要のないインターフェイスの部分で別の方法で開発する可能性のある依存関係を削除します。
理由の 1 つは、インターフェイスごとに最小限のメソッドしか持たない多くのインターフェイスを使用すると、各インターフェイスの実装が容易になり、それらを正しく実装することが容易になるためです。大きなインターフェースは手に負えないことがあります。また、シナリオでフォーカスされたインターフェイスを使用すると、オブジェクトのどのファセットが使用されているかを確認できるため、コードがより保守しやすくなります (たとえば、IComparable インターフェイスを使用すると、オブジェクトが特定のシナリオでの比較にのみ使用されていることがわかります)。
ISPは重要です。
ISP の基本的な考え方 : クライアントは、使用しない方法に依存することを強いられるべきではありません。
この原則はより論理的であるように思われます。理想的には、クライアントは、クライアントによって使用されないメソッドを実装すべきではありません。
コード例については、以下の SE の質問を参照してください。
インターフェイス分離の原則 - インターフェイスへのプログラム
利点:
柔軟性: ISP が存在しない場合、1 つの汎用 FAT インターフェイスとそれを実装する多くのクラスがあります。1 つのインターフェースと 50 のクラスがあるとします。インターフェイスに変更がある場合、50 個のクラスすべての実装を変更する必要があります。
ISP を使用すると、一般的な FAT インターフェイスを細かい粒度の小さなインターフェイスに分割できます。小さな粒度のインターフェースに変更があった場合、そのインターフェースを実装するクラスのみが影響を受けます。
保守性と使いやすさ: 変更が一般的な FACT インターフェイスではなく、細かい粒度のインターフェイスに限定されるため、コードのメンテナンスが容易になります。関連のないコードは、実装クラスの一部ではなくなりました。
この原則は主に 2 つの目的に役立ちます
コードをより読みやすく、管理しやすくするため。
クラスの単一の責任を促進します(高い結束)。もちろん、クラスに動作に影響を与えないメソッドが必要なのはなぜですか? なぜそれを削除しないのですか。それがISPの目的です
設計者が ISP に懸念を示すために尋ねなければならない質問はほとんどありません。
- ISP で達成できること
- ISP 違反がないか既存のコードを分析する方法
この議論をさらに進めるために、この原則は厳密な意味での「原則」ではないことも付け加えなければなりません。特定の状況下では、読みやすさを促進する代わりに ISP を設計に適用すると、オブジェクト構造が判読不能になり、乱雑になる可能性があるためです。不要なコード。これは、java.awt.event パッケージで確認できます。
私のブログの詳細: http://design-principle-pattern.blogspot.in/2013/12/interface-segregation-principle.html