lsp

    3热度

    3回答

    由于(Liskov)替换原则,下列方法确实起作用,它说如果希望某个类的实例有引用,那么您可以将引用替换为该类的任何子类的实例。 public static void main(String[] args) { Cat felix = new Cat(); Object copyCat = felix; } 现在,据我所知,在这种情况下,我创建一个Cat对象(因此存储器空间被在堆中创建),

    2热度

    1回答

    我试图第一次坚守Robert Martin的SOLID设计原则,但我并不擅长。 实质上,我需要一个“节点”对象的层次结构。一些节点是NodeHosts,一些是NodeChildren,一些是Both。每个人都这样做过,但我无法弄清楚如何做到这一点不固过于复杂的设计,还是进行节点亚型是这样的: INodeHostType node; public INodeType NodeType { ..

    8热度

    2回答

    我正在使用违反Liskov替换原则的API:它抛出了自己的Exception类型,它扩展了Exception,但将基类中的异常消息放入新的ErrorCode字段,并将其自己的(无用的)消息放入消息字段。因此,为了显示正确的消息,我需要将异常强制转换为DerivedException类型并使用ErrorCode字段。如果我把它当作一个Exception对象,我会得到错误的信息。 现在,这在文体层面让

    0热度

    1回答

    在维基百科上 的Liskov Substitution Principle(LSP)说我有一个Alien类的numFingers属性*。偶尔,我需要从数据库中提取numFingers的总和,并按照其他字段值进行分组。在这些情况下,我不需要单独处理每条记录,但我确实需要访问它们的许多功能 - 能够获取属性,对它们执行一些基本逻辑等。这可能包括从数千记录,所以当数据库查询可以完成对我的求和工作时,实例

    4热度

    4回答

    使用案例:我正在使用数据模板将视图与ViewModel进行匹配。数据模板通过检查所提供的具体类型的最派生类型来工作,并且它们不查看它提供的接口,所以我必须在没有接口的情况下执行此操作。 我在这里简化了这个例子,而忽略了NotifyPropertyChanged等,但在现实世界中,一个View将绑定到Text属性。为了简单起见,假设带有TextBlock的视图将绑定到ReadOnlyText,并且带

    70热度

    2回答

    您是否可以用一个很好的C#示例来解释Liskov替换原则(SOLID的'L'),该示例以简化的方式涵盖了原理的所有方面?如果真的有可能。

    1热度

    3回答

    我遇到了里氏替换原则的声明原件来到沃德的wiki今晚原始语句的方向性: 这到底是怎么想的东西像下面的替代属性:如果每个S类型的对象o1有一个类型为T的对象o2,因此对于所有按照T定义的程序P,当o1代替o2时,P的行为不变,那么S是T的一个子类型。“ - Barbara Liskov,数据抽象和层次结构,SIGPLAN公告,23,5(1988年5月)。 我一直都在ŝ被垃圾在解析谓词逻辑(我没有计算

    -1热度

    1回答

    是否使用虚拟方法违反LSP(L部分SOLID原则)还是有一些例外? 由于提前, Saghar Ayyaz

    48热度

    3回答

    我通常会试图确保我的对象实例符合Liskov Substitution Principle,但我一直在想,人们是否认为LSP也适用于构造函数? 我已经尝试了谷歌搜索这个,但我一直没能找到任何强烈的意见任何方式。 我应该注意到我的大部分代码都是在Ruby中,但我有时会发现我的子类构造函数与父类稍有不同。他们采用相同的基本参数集,通常还有额外的参数。有时候,其他类方法也会发生这种情况。 在我的脑海里,

    2热度

    3回答

    可以将有界的堆栈数据结构(具有上限的堆栈)作为常规堆栈的子类型实现而不违反Liskov置换属性吗? 传统的堆栈可以用来代替有界的堆栈,但是一个有界的堆栈只能用来代替传统的堆栈,如果它有足够大的限制。我是否纠正这个想法? liskov属性是否正确? 谢谢。