QQ登录

只需要一步,快速开始

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

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

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

1

主题

3

听众

5

积分

升级  0%

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-10 22:40 |只看该作者 |正序浏览
|招呼Ta 关注Ta
法则4:Liskov替换法则(LSP)    8 \4 W$ F+ m- m, [) ^! W3 U$ D

$ g: h) Y# H0 N# T& E8 A% M* M* z! l  F# D
使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用它们。   
4 a' R; _- |5 r; A; ^) s; u* V6 j1 m* O) `7 Q& m# \9 e
, b" F5 W6 J" P2 Y1 X. h" ]
 [ Function Thar Use Referennces To Base(Super) Classes Must Be Able To Use Objects   Of Derived(Sub) Classes Without Knowing It ]                   
$ S; \% K3 x- f& Q* ?* `" L) S4 Y" D5 @2 e
; v9 y4 F) e8 r; r6 C$ o4 c
Liskov替换法则  
3 K2 V6 q6 L/ X  v
0 |( ?/ ^% L% l& C7 l, J
# Z4 A3 D3 @  O( E* ~# `1.显而易见,Liskov替换法则(LSP)是根据我所熟知的"多态"而得出的。    % y8 {# D# Z2 C# Q- r& l

, u+ d2 h7 c: F# |4 v$ l2 ]( r. P# |4 L$ Y
2.例如:        
6 K+ }2 y# ]2 U# D
+ X! A) c4 F: z7 w
2 V- r: i7 p9 u5 `5 Y方法drawShape应该可与Sharp超类的任何子类一起工作(或者,若Sharp为Java接口,则该方法可与任何实现了Sharp接口的类一起工作)   
. N4 j* q" x. `: I9 K- U
* U3 s9 @4 L1 Y4 P3 ~) x# c# }: ]9 L' A" h
 但是当我们在实现子类时必须要谨慎对待,以确保我们不会无意中违背了LSP。 
; z4 z& Q( l- d6 |7 |! O* U& _. e/ y3 Q
% M4 e# W5 }5 k; P7 `1 q* p4 j

6 r( C; T+ R' }/ J/ I: ^; F
, ~, l$ N  d! d& M7 `4 h
& E/ F3 G( A, p* s& S$ Y$ L 3.若一个函数未能满足LSP,那么可能是因为它显式地引用了超类的一些或所有子类。
  l2 q* w3 C. o8 \3 f" T" Q" Y$ x- \- B0 c* S
3 \3 U  b, S) y
这样的函数也违背了OCP,因为当我们创建一个新的子类时,会不得不进行代码的修改。! H7 R9 H8 E* ?# ?) X. h$ _3 M
6 k& d% u/ m- _9 B

. ?/ n0 T0 }5 k$ w2 E>>更多一些面向对象得设计法则(4)
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

0

主题

4

听众

5

积分

升级  0%

该用户从未签到

自我介绍
Statistician & Applied Mathematician
回复

使用道具 举报

pxwgih        

0

主题

4

听众

151

积分

升级  25.5%

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

    [LV.1]初来乍到

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-10 20:21 , Processed in 0.543467 second(s), 67 queries .

    回顶部