インターフェイス分離の原則では、次のように述べられています。
クライアントは、使用しない方法に依存することを余儀なくされるべきではありません。
Null オブジェクト パターンでは、インターフェイスを実装する Null クラスはそれに対して何もしません。これは意図的なものです。
ただし、使用しないメソッドによって異なります。それとも、実装されたメソッドで何もしないことによって実際には単に依存しているだけなので、原則を破っていませんか?
インターフェイス分離の原則では、次のように述べられています。
クライアントは、使用しない方法に依存することを余儀なくされるべきではありません。
Null オブジェクト パターンでは、インターフェイスを実装する Null クラスはそれに対して何もしません。これは意図的なものです。
ただし、使用しないメソッドによって異なります。それとも、実装されたメソッドで何もしないことによって実際には単に依存しているだけなので、原則を破っていませんか?
通常、Null オブジェクト パターンは依存関係を取りません。典型的な Null オブジェクトは次のようになります。
public class NullDataStore : IDataStore
{
public void StoreData(Data data)
{
}
}
この場合のNullDataStore
クラスには依存関係がないため、使用しないメソッドには依存しません。したがって、ISP を壊すことはありません。
Null オブジェクト パターンは、インターフェイス分離の原則自体を破るものではありません。
原則全体を破ることができるのはnullオブジェクトではありませんが、オブジェクトが注入される特定の操作とは関係のないメンバーを公開する場合と公開しない場合があるnullオブジェクトのインターフェースになります。
null オブジェクトがインターフェイスを実装し、プロジェクトの一部がそのメンバーの実際の実装を持つ通常のオブジェクトを使用する可能性があり、そのインターフェイスが実際に必要なものだけを公開する場合、インターフェイス分離の原則はその特定のインターフェイスによって破られません。