インターフェイス分離の原則(Interface Segregation Principle, ISP)は、ソフトウェア設計の原則の一つで、SOLID原則の一部である。この原則は、「クライアントは使用しないメソッドに依存するべきではない」という考え方に基づいている。つまり、大きくて汎用的なインターフェイスよりも、小さくて特定のクライアントに特化したインターフェイスを設計するべきであるという原則です。
違反している
class DocumentGenerator
def generate_pdf
# PDFドキュメント生成のロジック
end
def generate_word
# Wordドキュメント生成のロジック
end
# 他のドキュメントタイプの生成メソッドもここに含まれる
end
違反理由
DocumentGeneratorクラスにgenerate_pdfとgenerate_word というメソッドが両方とも含まれている場合、特定のレポート(例えばPDFレポート)にのみ関心があるクライアントが Report クラスのインスタンスを使用するとき、そのクライアントは理論上、generate_word という使用しないメソッドにも間接的に依存することになります。
遵守している
module DocumentGenerator
class PdfDocument
def generate
# PDFドキュメント生成のロジック
end
end
class WordDocument
def generate
# Wordドキュメント生成のロジック
end
end
# 他のドキュメントタイプも同様に定義
end
PdfDocumentはpdfの生成にのみ関心があるクラスである