Null对象模式是否会破坏接口隔离原则?

时间:2016-05-20 20:34:24

标签: java c# solid-principles null-object-pattern

Interface Segregation principle表示:

  

不应强迫客户依赖他们不使用的方法。

在Null对象模式中,实现接口的Null类对它没有任何作用。这是故意的。

但是,它取决于它不使用的方法。或者它是否违反了原则,因为它实际上只是依靠它而不是在实现的方法中做任何事情?

2 个答案:

答案 0 :(得分:3)

通常,Null对象模式不具有任何依赖性。以下是典型的Null对象的样子:

public class NullDataStore : IDataStore
{
    public void StoreData(Data data)
    {

    }
}

在这种情况下,NullDataStore类没有依赖关系,因此它不依赖于它不使用的方法。所以它不会打破ISP。

答案 1 :(得分:0)

空对象模式本身不会破坏接口隔离原则

不是空对象可以破坏整个原则,但它将是null对象的接口,它可能会或可能不会暴露与注入对象的给定操作无关的成员。

如果null对象实现了一个接口,并且项目的一部分可能使用常规对象和其成员的实际实现,并且该接口公开了实际需要的内容,那么接口隔离原则不会被给定的界面打破。