iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0

SOLID組成:
單一職責原則 Single Responsibility Principle,SRP
開放閉合原則 Open Closed Principle,OCP
● 里氏替換原則 Liskov Substitution Principle,LSP
● 介面隔離原則 Interface Segregation Principle,ISP
● 依賴反轉原則 Dependency Inversion Principle,DIP

依賴反轉原則
定義:
"A.High-level modules should not depend on low-level modules.Both should depend on abstractions.
B.Abstractions should not depend upon details.Details should depend upon abstractions."
目的:透過介面以及抽象方法來定義業務規則,再由其它組件實作介面及操作抽象方法的細節。
舉個生活的例子:
來張圖說明
https://ithelp.ithome.com.tw/upload/images/20220919/201519171Kex3ACfJp.jpg
假設以超市人力配置為例,一般設計流程習慣以流程順序處理,所以當新需求增加「外送」則在人力配置的程式碼就需要修改,這有可能會影響其他不相干地方造成出錯。
所以依賴反轉原則就是透過介面/抽象類別,來避免組織間的干擾,以左圖來看可知道存在一個擴展點,利用介面處理再用抽象類別實作介面,最後流程控制部分就可以透過抽象類別中的抽象方法實作細節。這樣的好處是1.未來增加新的工作職責,只需在介面中增加抽象方法處理 2.假設結帳流程有新的工作需求,只需在抽象類別增加抽象方法實作流程細節。
以上由介面及抽象方法來調整程式碼間依賴關係,使其面對需求調整時不至於影響太多組件間變化,可看出OCP與DIP有著密切關係,OCP為軟體架構設計主導原則,由預測擴展點來限制系統被修改的影響,DIP為實現架構設計的組織原則,透過介面/抽象類別將程式碼間依賴解偶。


上一篇
SOLID設計原則 – 開放閉合原則
下一篇
Java:HashMap | TreeMap
系列文
寫寫歷年職場經歷過的大小事或近期所學習的知識啟發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言