是否存在无法编写或寻求的Stream派生类的事实是否打破了Liskov替换原则?
例如,无法搜索NetworkStream,NotSupportedException如果Seek调用该方法,它将抛出一个.
或者因为CanSeek旗帜的存在可以吗?
鉴于众所周知的例子Square继承Rectangle......会标志的加入DoesHeightAffectsWidth,并DoesWidthAffectsHeight以Rectangle解决这个问题?
这不是通过添加标志来打开固定东西的大门吗?
c# oop liskov-substitution-principle stream solid-principles
1)LSP是否也适用于接口,这意味着我们应该能够使用实现特定接口的类并仍能获得预期的行为?
2)如果确实如此,那么为什么编程接口被认为是好事(顺便说一句 - 我知道对接口的编程会增加松散耦合),如果反对使用继承的主要原因之一是由于不存在风险遵守LSP?也许是因为:
a)松散耦合的好处超重了不遵守LSP的风险
b)与继承相比,类(实现接口)不会附加到LSP的可能性要小得多
谢谢