Interface Segregation Principle (ISP) - OO設計のISPインターフェイス分離原則
2008/06/09 20:55Update
使用していないインタフェースを依頼してはならない。
Robert C. Martinによる有名なオブジェクト指向設計(OOD)の原則“Principles of OOD”があります。
本文は“Principles of OOD”のインターフェイス分離原則:Interface Segregation Principle (ISP)について学びます。
ISPインターフェイス分離原則はクラス同士の結合度を減らすという着眼点からクラス(インタフェース)の設計方法を表す原則です。
Clients should not be forced to depend upon interfaces that they do not use.
クライアントは使用していないインタフェースを依存してはならない。
つまり、
◇ クライアントは自分が使うインタフェースだけを依存すべきである
◇ 単一のインタフェースより複数のインタフェースを使うべきである
◇ インタフェースをクライアントごとに分離すべきである
言い換えますと、クラスを設計する際、以下の原則に従うべきです:
◇ インタフェースの設計の原則:
①クライアントに使われていなかったメソッドをインタフェースから外すべきである、またはインタフェースはクライアントに必要だけのメソッドを持つ
②複数のクライアントはインタフェースのそれぞれ異なるメソッドを使う場合、それらのメソッドをそれぞれ別のインタフェースにすべきである
◇ インタフェースの継承の原則:例えインタフェースAはインタフェースBから継承したとし、そしてAはBのメソッドを有するとなり、インタフェースBはもちろん、AもISP原則に従うべきである。
The Interface Segregation Principle (ISP)
by Robert C. Martin.「PDF。英語」
本文は“Principles of OOD”のインターフェイス分離原則:Interface Segregation Principle (ISP)について学びます。
ISPインターフェイス分離原則はクラス同士の結合度を減らすという着眼点からクラス(インタフェース)の設計方法を表す原則です。
概要
Clients should not be forced to depend upon interfaces that they do not use.
クライアントは使用していないインタフェースを依存してはならない。
つまり、
◇ クライアントは自分が使うインタフェースだけを依存すべきである
◇ 単一のインタフェースより複数のインタフェースを使うべきである
◇ インタフェースをクライアントごとに分離すべきである
言い換えますと、クラスを設計する際、以下の原則に従うべきです:
◇ インタフェースの設計の原則:
①クライアントに使われていなかったメソッドをインタフェースから外すべきである、またはインタフェースはクライアントに必要だけのメソッドを持つ
②複数のクライアントはインタフェースのそれぞれ異なるメソッドを使う場合、それらのメソッドをそれぞれ別のインタフェースにすべきである
◇ インタフェースの継承の原則:例えインタフェースAはインタフェースBから継承したとし、そしてAはBのメソッドを有するとなり、インタフェースBはもちろん、AもISP原則に従うべきである。
参考資料
The Interface Segregation Principle (ISP)
by Robert C. Martin.「PDF。英語」
Sponsored Link
- Relative Articles
- Single Responsibility Principle (SRP) - OO設計のSRP単一責任原則 - (2008/06/08 01:34)
- Liskov Substitution Principle (LSP) - OO設計のLSP リスコフ置換原則 - (2008/06/09 13:18)
- Dependency Inversion Principle (DIP) - OO設計のDIP依存逆転原則 - (2008/06/09 14:56)
- The Stable Dependencies Principle (SDP) - OO設計のSDP安定依存原則 - (2008/06/09 16:53)
- The Acyclic Dependencies Principle (ADP) - OO設計のADP非循環依存原則 - (2008/06/09 17:33)
- The Stable Abstractions Principle (SAP) - OO設計のSAP安定度・抽象度等価原則 - (2008/06/09 17:48)
- The Common Closure Principle (CCP) - OO設計のCCP閉鎖性共通原則 - (2008/06/09 18:04)
- Release Reuse Equivalency Principle (REP) - OO設計のREP再利用・リリース等価原則 - (2008/06/09 18:15)
- The Common Reuse Principle (CRP) - OO設計のCRP全再利用原則 - (2008/06/09 18:24)
- オブジェクト指向設計の原則 概要 - (2008/07/21 22:03)