QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4153|回复: 2
打印 上一主题 下一主题

一些面向对象得设计法则(4)

[复制链接]
字体大小: 正常 放大

1

主题

3

听众

5

积分

升级  0%

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-10 22:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
法则4:Liskov替换法则(LSP)    5 z3 @" ?% B( t: S7 j8 O

5 h3 i! W. P" e6 h2 ?6 v; d5 N
! m3 E5 F# I' w! v使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用它们。   
8 K' ?  e  \% y( s; L4 ]  }% r) e0 u
  _8 P0 K, B3 u( |( v7 a0 o( e9 Z
, g. v' K8 u8 |# D) X [ Function Thar Use Referennces To Base(Super) Classes Must Be Able To Use Objects   Of Derived(Sub) Classes Without Knowing It ]                   
2 Y) S3 j$ g" x. u3 A* _  a8 N8 x
% Z9 B0 L' y  Z+ E  u, ~* \: e
Liskov替换法则  
: s3 d2 Q7 N+ i- B0 N
8 I; a# C3 l& A' G
  g3 d# K1 a+ L- ~8 j1.显而易见,Liskov替换法则(LSP)是根据我所熟知的"多态"而得出的。      m4 Z: b3 X; |% J- y
7 F% u" P9 T  d# A

9 B1 x( ~$ V, f2 h( Q( _- I2.例如:        , y: S; S1 u, J7 V; s, h
+ w0 e) a8 R$ P8 n! e% S$ X

  Z3 n* @- C/ `# g; K1 @方法drawShape应该可与Sharp超类的任何子类一起工作(或者,若Sharp为Java接口,则该方法可与任何实现了Sharp接口的类一起工作)   
) Z, L6 M( U- y7 j2 Z
' Q, F2 e8 y7 D0 q. Y9 `
" Z- R8 b$ `2 h0 `- C  V! B 但是当我们在实现子类时必须要谨慎对待,以确保我们不会无意中违背了LSP。 # ?3 X. t! K" O8 a* o' G& [
+ T" u! I5 |! r. g8 I2 s; p7 U9 x
3 E; V6 P" {1 s- c$ M
% o: |6 t( F6 ]. R

5 S: [2 G. Q3 t6 F8 e9 Y) f; t) F) c( l& X
 3.若一个函数未能满足LSP,那么可能是因为它显式地引用了超类的一些或所有子类。$ O6 X( a6 A' a8 T) ?' K' u

% H: i. i" z  w: e8 w+ m9 j6 d7 K
这样的函数也违背了OCP,因为当我们创建一个新的子类时,会不得不进行代码的修改。5 w# q- g( Q! H* X* q5 E
, |: D) g9 }4 ?* V2 Q5 u8 `

' C3 @3 O4 H# y  H% R5 n# D2 o8 y>>更多一些面向对象得设计法则(4)
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
pxwgih        

0

主题

4

听众

151

积分

升级  25.5%

  • TA的每日心情
    开心
    2012-1-16 11:09
  • 签到天数: 1 天

    [LV.1]初来乍到

    回复

    使用道具 举报

    0

    主题

    4

    听众

    5

    积分

    升级  0%

    该用户从未签到

    自我介绍
    Statistician & Applied Mathematician
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-5-26 06:02 , Processed in 0.376477 second(s), 67 queries .

    回顶部