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

沒有留言:

張貼留言

[leetcode] [KMP] KMP

ABCDABD... ABCDABF... 簡單的說, 傳統解兩字串匹配部分 可能會來個雙迴圈, 哀個比對, 當不匹配的時候, 會將下方列再後移1位 然後不匹配再後移 然而 如果像上放已經有4個屬於匹配的字串, 她就應該直接往後移四位來匹配, 而不是只移動1位 隱藏的思維是, 當...