定义:在任何父类出现的地方都可以用它的子类类替换,且不影响功能。
解释说明:
其实lsp是对开闭原则的一个扩展,在oo思想中,我们知道对象是由一系列的状态和行为组成的,里老油条氏替换原则说的就是在一个继承体系中,对象应该具有共同的外在特性,使用lsp时,如果想让我们的程序达到一个父类出现的地方都可以用它的子类来替裂项公式换且不影响功能,那么这个父类也应该尽量声明出子类所需要的一些公共的方法,父类被子类替换之后,会比较顺利,那么为什么说它是对开闭原则的一个扩展呢?因为我们在开闭原则中说尽量使用接口和抽象类,当然这个抽象类和接口也应该尽量定义得完整,这样我们这个接口和抽象类会比较稳定,这样既符合了开闭原则也满足了里氏替换原则。
解释说明:
在上面的代码中,定义了一个鸟类,企鹅类继承自鸟类。鸟类里面有飞的方法,而企鹅不会飞,所以上面的代码违反了里氏替换原则。
解释说明:
如果把河豚、企鹅当做宠物,我们可以定义一个宠物类,然后,让这些宠物继承这个类,我们知道每种宠物我们跟他玩耍的方式是不一样的。比如。企鹅有游泳的方法,河豚有游戏的方法,根据这个需求,我们设计一个系统,编写一个宠物类,让企鹅继承这个宠物类,在企鹅类里创建一个游泳的方法,这个方法不能放到宠物类里面,因为并不是所有宠物都会游泳。编写河豚类时,同样让他继承宠物类,在河豚类里面编写一个游戏的方法,这个时候客户端程序在使用宠物类和它的子类的时候,就需要做判断,具体是哪个子类,我们通过宠物类是无法调用具体的方法,要做一个判断和转型,如果在加一个狗类,狗类也会有一个独立的方法,要修改之前的代码(使用宠物类和它的子类的时候,要增加判断是狗类),这很明显不符合开闭原则,也不可能符合里氏替换原则,因为这里面的任何一个宠物都无法替换他的父类,因为他们的行为是不一样的,代码的可维心理班会总结下雨的声音护性和重用性很差!
代码下载链接:点此下载
到此这篇关于c#面向对象设计原则之里氏替换原则的文章就介绍到这了。希望对大家的学习有消防员的英雄事迹所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-06 00:54:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1819f083cfcc4f209dfa043bb281fb5b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C#面向对象设计原则之里氏替换原则.doc
本文 PDF 下载地址:C#面向对象设计原则之里氏替换原则.pdf
留言与评论(共有 0 条评论) |