iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

C# 從入門到WebApi系列 第 17

[DAY17] 淺出SOLID 關於里氏替換原則

  • 分享至 

  • xImage
  •  

關於里氏替換原則

英文是Liskov Substitution Principle (LSP)
這個原則並不是由Robert.C.Martin 第一次提出的
而是由Barbara Liskov在1988年寫下一段對子型態的定義
他說:

若對型態S的每一個物件o1
都存在一個型態為T的物件o2
使得在所有針對T編寫的程式P中
用o1替換了o2之後
程式P的行為工程不變
則S是T的子型態

看完這段之後,我把書蓋起來深呼吸,才忍住把書丟掉的衝動
事實上里氏替換原則想說的是
將物件A換成另一個物件B
你的程式還能如你所願的跑
就是好棒棒

我們來看看例子

地上跑的講膩了 我們來談談天空飛的

今天柯南的爸爸為了教會柯南開飛機
就給了錢讓柯南去買飛機
柯南看了看覺得有三台飛機他都很喜歡
所以他對爸爸說了

https://ithelp.ithome.com.tw/upload/images/20200917/20109549pQu8D6E0wI.png

所以柯南現在有三架飛機
它們都繼承至飛機這個類別

https://ithelp.ithome.com.tw/upload/images/20200917/20109549u5fYcVuKW5.png

今天柯南學會開飛機之後
他想要從夏威夷飛回日本找女朋友角蘭炫耀
結果他開到了紙飛機
於是起飛沒多久
飛機就墜機了

毛利小五郎:我聞到陰謀的味道

雖然紙飛機繼承了飛機在天上飛的函式
但他實際實作的卻是在天空滑翔
紙飛機這個子類別並不能好好的達成父類別想要做到的事
這就是違反里氏替換原則的例子


上一篇
[Day16] 淺出 Solid 關於開放封閉原則
下一篇
[Day18] 淺出Solid 關於介面隔離原則
系列文
C# 從入門到WebApi30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言