設計模式之美十六:接口隔離原則有哪三種應用?接口該如何理解

2020年02月04日11:48:21 科技 1633

王爭《設計模式之美》筆記

如何理解“接口隔離原則”?

接口隔離原則的英文翻譯是“ Interface Segregation Principle”,縮寫為ISP。意思是:客戶端不應該強迫依賴它不需要的接口。其中的“客戶端”,可以理解為接口的調用者或者使用者。

理解接口隔離原則的關鍵,就是理解其中的“接口”二字。在這條原則中,我們可以把“接口”理解為下面三種東西:

  • 一組 API 接口集合
  • 單個 API 接口或函數
  • OOP 中的接口概念

把“接口”理解為一組 API 接口集合

UserService中添加刪除用戶功能時,新加RestrictedUserService給特定用戶使用。

把“接口”理解為單個 API 接口或函數

把“接口”理解為 OOP 中的接口概念

通過RedisConfig、 MysqlConfig、KafkaConfig的熱更新和在頁面上展示,說明了符合接口隔離原則的代碼:

1.設計思路更加靈活、易擴展、易復用

2.不符合的設計思路在代碼實現上做了一些無用功

重點回顧

1. 如何理解“接口隔離原則”?

理解“接口隔離原則”的重點是理解其中的“接口”二字。這裡有三種不同的理解。

如果把“接口”理解為一組接口集合,可以是某個微服務的接口,也可以是某個類庫的接口等。如果部分接口只被部分調用者使用,我們就需要將這部分接口隔離出來,單獨給這部分調用者使用,而不強迫其他調用者也依賴這部分不會被用到的接口。

如果把“接口”理解為單個 API 接口或函數,部分調用者只需要函數中的部分功能,那我 們就需要把函數拆分成粒度更細的多個函數,讓調用者只依賴它需要的那個細粒度函數。

如果把“接口”理解為 OOP 中的接口,也可以理解為面向對象編程語言中的接口語法。那接口的設計要盡量單一,不要讓接口的實現類和調用者,依賴不需要的接口函數。

2. 接口隔離原則與單一職責原則的區別

單一職責原則針對的是模塊、類、接口的設計。接口隔離原則相對於單一職責原則,一方面更側重於接口的設計,另一方面它的思考角度也是不同的。接口隔離原則提供了一種判斷接口的職責是否單一的標準:通過調用者如何使用接口來間接地判定。如果調用者只使用部分接口或接口的部分功能,那接口的設計就不夠職責單一。

參考:https://time.geekbang.org/column/intro/250?code=gLit0LpsKZQ6vOVqS1htGOSAKYLCYeMuklw2dwajH-4%3D

科技分類資訊推薦

長安與東風重組新進展:朱華榮稱不會改變長安既定戰略 - 天天要聞

長安與東風重組新進展:朱華榮稱不會改變長安既定戰略

2月9日,長安汽車和東風集團股份(00489.HK)同步發布了控股股東“正在與其他國資央企集團籌劃重組事項”的信息。長安汽車的控股股東是兵裝集團,而東風集團股份的控股股東是東風公司。隨即,長安汽車和東風集團這兩家汽車央企將合併重組,成為業內關注的焦點。
公安部出手了!年齡限制放寬10年、送考下鄉,2025年考駕照不難了 - 天天要聞

公安部出手了!年齡限制放寬10年、送考下鄉,2025年考駕照不難了

電動車加強管理以後,要求機動車類型的車輛需要持證上路,但是老年人考駕照卻受阻,一方面有年齡的限制,另一方面偏遠山區考駕照不方便,所以在2025年公安部出手了,年齡限制放寬10年,同時推出送考下鄉服務,還進一步的降低考駕照的費用,2025年起考摩托車駕照不難了。
從“星靈安全守護體系”到昊鉑HL,看懂廣汽科技日 - 天天要聞

從“星靈安全守護體系”到昊鉑HL,看懂廣汽科技日

發布會以技術切入,並全程圍繞安全展開。廣汽集團董事長、總經理馮興亞率先登場,宣布2025年四季度將正式上市支持L3級智能駕駛的車型,他同時強調面向自動駕駛時代對智能駕駛技術、整車安全架構以及突發風險處理能力的要求更高。如何才能滿足更高的要求?馮興亞提到了“廣汽
關稅大棒下,最受傷的車企出現了 - 天天要聞

關稅大棒下,最受傷的車企出現了

特朗普的關稅大棒剛揮出,尚未嚇退“外敵”,卻先刺痛了自己。近日,擁有瑪莎拉蒂、Jeep等14個品牌的全球第四大車企斯泰蘭蒂斯突然宣布裁撤900名美國工人,關閉加拿大和墨西哥兩家工廠,北美生產線陷入癱瘓。幾乎同一時間,捷豹路虎宣布暫停對美出口一個月,奧迪更是直接