2022年1月11日 星期二

[Geroge]面向對象設計-介面隔離原則ISP

 --影片內容--

介面隔離原則(Interface Segregation Principle)

定義: 使用多個專一的介面, 總比一個總介面好

高內聚

優點: 會使一個軟體系統功能擴展時, 修改的壓力不會傳到其他對象那裏


例子:

我們有一個星探類Search, 他要來找尋明演員, 一個好的女演員需要好看good looking, 好身材good figure, 還有好的脾氣temper, 我們就用IPrettyGirl做為這些抽象標準的介面, Search 只要找到IPrettyGirl就行, 而Angelababy剛好實行這個介面, 具有三種能力, 如下圖







然而, 今天變更需求, 有另外一個星探, 他只需要女生有 好身材 good figure就可以了, 那他和IPrettyGirl使用相同介面就不合適, 因為他只需要其中的niceFire功能, 因此就調整如下








我們將INiceFigure抽離出來成另一個介面, 本來的IPrettyGirl改名IGoodGirl, 然後生出一個抽象類 BasePrettyGirl 去實行INiceFigure和IGoodGirl這兩個介面, 因此AngelaBaby作為子類去繼承BasePrettyGirl , 此時SearchB 最小需求~想要有好身材的女生, 就能滿足, 也就是要使用到更多功能的可以去依賴BasePrettyGirl 介面, 而只要看好身材只需要依賴INiceFigure介面, 這樣就達到很好的擴展





















































感想, 這樣做的好處, 對於SearchB來說, AngelaBaby更多的細節就隱藏起來, 他只需要知道她是不是implement Nice Figure就好

參考: 

https://www.youtube.com/watch?v=W7b7zcxUxr8&list=PLGmd9-PCMLhb16ZxeSy00qUsBazXgJyfM&index=8

https://github.com/iw5420/geroge-design-pattern

沒有留言:

張貼留言

量身訂做建議(37 歲,6 年 Java 後端工程師)from chatgpt

🎯 量身訂做建議(37 歲,6 年 Java 後端工程師) 1️⃣ 先看你的條件 年齡 37 屬於「中高年資」工程師,履歷上的 深度 / 系統設計能力 會比「語言多寡」更重要。 6 年 Java 後端 代表你在 Spring Boot、資料庫、API 設計...