iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

C# 從入門到WebApi系列 第 18

[Day18] 淺出Solid 關於介面隔離原則

  • 分享至 

  • xImage
  •  

介面隔離原則

英文是Interface Segregation Principle (ISP)

介面隔離原則大概有2個重點

  1. 使用介面來畫出邊界(分離實作間的依賴性)
  2. 不要強迫使用者去依賴他所不需要依賴的東西

我們拿昨天的例子來討論
我們在飛機上加了兩樣功能
滑翔跟展覽

https://ithelp.ithome.com.tw/upload/images/20200918/2010954928l24xXunk.png

正如昨天所說的
紙飛機不會飛
只有滑翔功能
那是他完整的繼承飛機的所有功能
所以她被迫實作所有飛機的功能
但是沒有人會用紙飛機進行飛行
因此這就違反介面隔離原則

我們應該要將飛行這件事的抽出來成一個介面
只有實作這個介面的類別才能飛行
https://ithelp.ithome.com.tw/upload/images/20200918/20109549mZBLxizw24.png

這麼做的好處還有一個
我們以資料庫為例
假設我們今天決定用MySQL當我專案的資料庫
https://ithelp.ithome.com.tw/upload/images/20200918/2010954987VMimdnz0.png

今天因為種種原因
我想要將MySQL換成NoSQL
例如MongoDB
但是我專案中所有對於資料庫的存取方法都是基於MySQL所編寫而成的
如果要替換資料庫就會導致我整個系統要重寫

如果我們今天對於將資料庫的存取抽離成一個介面
https://ithelp.ithome.com.tw/upload/images/20200918/20109549TdoKqiN1Qm.png

系統所操作的是資料庫介面的CRUD功能
而不是實體的資料庫
今天任何實作資料庫介面的資料庫
都可以輕易的替代MySQL


上一篇
[DAY17] 淺出SOLID 關於里氏替換原則
下一篇
[Day19] 淺出Solid 關於依賴倒置原則
系列文
C# 從入門到WebApi30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言