Programming 版 (精华区)

发信人: JJason (总统~~), 信区: Programming
标  题: Liskov替换法则(LSP)(转载)
发信站: 哈工大紫丁香 (2003年01月12日20:38:06 星期天), 站内信件

【 以下文字转载自 SoftEng 讨论区 】
【 原文由 esier 所发表 】
使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象
类型的情况下使用它们。
[ Function Thar Use Referennces To Base(Super) Classes Must Be Able To 
Use Objects Of Derived(Sub) Classes Without Knowing It ]


Liskov替换法则
    显而易见,Liskov替换法则(LSP)是根据我所熟知的"多态"而得出的。
    例如:
 
    方法drawShape应该可与Sharp超类的任何子类一起工作(或者,若Sharp为Java
接口,则该方法可与任何实现了Sharp接口的类一起工作)
    但是当我们在实现子类时必须要谨慎对待,以确保我们不会无意中违背了LSP。


    若一个函数未能满足LSP,那么可能是因为它显式地引用了超类的一些或所有子
类。这样的函数也违背了OCP,因为当我们创建一个新的子类时,会不得不进行代
码的修改。

总结
    Liskov替换法则(LSP)清楚地表明了ISA关系全部都是与行为有关的。
    为了保持LSP(并与开放-封闭法则一起),所有子类必须符合使用基类的
client所期望的行为。
    一个子类型不得具有比基类型(base type)更多的限制,可能这对于基类型来
说是合法的,但是可能会因为违背子类型的其中一个额外限制,从而违背了LSP!

    LSP保证一个子类总是能够被用在其基类可以出现的地方!

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.112.26.39]
--
※ 转载:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: 202.118.229.69]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.107毫秒