iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 4
0
Software Development

三分鐘熱度的設計模式系列 第 4

Day04 - 硬要用老闆角度看里氏替換原則(Liskov Substitution principle)

子類別必須能夠替換父類別,並且行為正常

  • 方法要與介面要提供的功能一致(合約設計,Design By Contract)

當功能被繼承覆寫,卻沒有照著父類別的功能規範時,可能會導致功能被誤導而誤用。


假設會計有個系統[客戶企業.exe]可以建立支付清單,可以查詢客戶是否付款,來查詢客戶是否已經付款給我們

https://ithelp.ithome.com.tw/upload/images/20190920/200942230IS1wyC5YU.png

後來關係企業也需要建立支付清單,所以資訊人員直接用[客戶企業.exe]直接改寫一支新的程式[關係企業.exe],但功能是查詢我們是否付款給他們,沒有支付的話,則會立刻付款給關係企業。

https://ithelp.ithome.com.tw/upload/images/20190920/200942239JkRCHR1q1.png

結果過了很久,關係企業我們已經不需要付款,資訊人員與會計也換了人,所以這個功能也沒有人使用。

需要關係企業變成我們的客戶之一,他們變成要支付給我們,且合約上的支付金額單位變成美金計算。

此時新的會計人員發現了這支[關係企業.exe]的程式,以為提供的功能與[客戶企業.exe]相同,便請資訊人員把功能從[台幣計算]改成[美金計算]

https://ithelp.ithome.com.tw/upload/images/20190920/200942237OH2KZ8uox.png

然後會計人員很開心的開始使用這支功能...END


上一篇
Day03 - 從老闆角度看開放封閉原則(Open-Closed Principle)
系列文
三分鐘熱度的設計模式4

尚未有邦友留言

立即登入留言