読者です 読者をやめる 読者になる 読者になる

The Interface Segregation Principle (ISP) インターフェース分離原則


インターフェース分離原則とは

クライアントは自分が使わないメソッドに依存することを強制されない

Clients should not be forced to depend upon interfaces that they do not use.

Many client specific interfaces are better than one general purpose interface.[by Martin]

内容

クラス同士の結合度を減らすという着眼点からクラス(インタフェース)の設計方法を表す原則です。つまり、

  • クライアントは自分が使うインタフェースだけを依存すべきである
  • 単一のインタフェースより複数のインタフェースを使うべきである
  • インタフェースをクライアントごとに分離すべきである


言い換えますと、クラスを設計する際、以下の原則に従うべきです

インタフェースの設計の原則:
  • クライアントに使われていなかったメソッドをインタフェースから外すべきである、またはインタフェースはクライアントに必要なだけのメソッドを持つべきである
  • 複数のクライアントはインタフェースのそれぞれ異なるメソッドを使う場合、それらのメソッドをそれぞれ別のインタフェースにすべきである
インタフェースの継承の原則
  • 例えインタフェースAはインタフェースBから継承したとし、そしてAはBのメソッドを有するとなり、インタフェースBはもちろん、AもISP原則に従うべきである。