Liskov替代设计原则无法实现?

时间:2014-08-05 00:03:47

标签: solid-principles

请举例说明" Liskov替代"设计原则无法实现?

感谢。

2 个答案:

答案 0 :(得分:1)

可能无法实现LSP的情况是,您可能对A类有两个要求:(1)它继承B类或实现接口C,(2)它提供B类提供的一些行为或接口C收缩它的行为。

违反Liskov替换原则的类的示例可以在.NET Framework的ReadOnlyCollection<T>中找到,它实现ICollection<T>但不提供Add或{{的必需行为1}}。显然,Remove允许添加或删除记录是没有意义的,但我怀疑它还有令人信服的理由来实施ReadOnlyCollection<T>

答案 1 :(得分:0)

建议您阅读circle eclipse problem

基本上,当您向子类型添加其他条件时,LSP很难实施。

在圆圈的情况下,宽度必须等于高度的额外条件,但只知道超类eclipse的系统期望能够独立地修改它们。

请注意,如果日食在宽度或高度上没有设置器,则这不是问题。由于使用eclipse的系统无法修改它们,因此圈子不会改变日食合约。