嘻哈說 設計模式之介面隔離原則

2021-08-28 21:57:35 字數 3074 閱讀 5404

按照慣例,首先我們來看一下介面隔離原則的定義。

類間的依賴關係應該建立在最小的介面上。

介面中的方法應該盡量少,不要使介面過於臃腫,不要有很多不相關的邏輯方法。

有點類似於單一職責原則,都是功能盡可能的簡單單一,不要冗餘太多其他不相關的。

單一職責原則主要是類與方法,而介面隔離原則卻是對介面而言的。

小廚洗菜,大廚做飯。

在番茄餐廳的後廚,老闆與求生欲極強的廚師長在聊天。

老闆:最近我們番茄餐廳廣受好評,菜品味道美味,這還得感謝你這位廚師長呀。

廚師長:應該的,這該感謝我。

老闆:嗯?你確定?

廚師長:還沒,還沒說完,這該感謝我…們的郝老板,這次確定了。(冷汗)

老闆:你這求生欲厲害了,嘆為觀止呀。不過現在隨著顧客的增多,人手再次不夠了,再招廚師肯定來不及了,你有什麼好辦法嗎?

廚師長:辦法我還真有乙個,我們可以招點小廚,小廚要好招一些。

老闆:但小廚做飯不夠美味,很容易流失客戶的。

廚師長:小廚不做飯,小廚只負責洗菜。這樣呢,大廚就不用洗菜了,只負責做飯,這樣效率就上去了。

老闆:你是不是不想洗菜?

廚師長:當然不是,我就是,就是,就是替公司著想。

老闆:好吧,準了,招人吧。

之前我們在依賴倒置原則聊過對介面程式設計,所以,首先我們定義乙個廚師介面。

package com.fanqiekt.principle.segregation;

/** * 廚師介面

* * @author 番茄課堂-懶人

*/public inte***ce ichef

廚師做兩件事,乙個是洗菜,乙個是做菜。

接下來,我們寫一下大廚的**,大廚實現了廚師介面。

大廚做飯,但不負責洗菜。

package com.fanqiekt.principle.segregation;

/** * 大廚

* * @author 番茄課堂-懶人

*/public class bigchef implements ichef

@override

public void cooking()

}

我們再寫一下小廚的部分,小廚也是實現廚師介面。

小廚不做飯,小廚只洗菜。

package com.fanqiekt.principle.segregation;

/** * 小廚

* * @author 番茄課堂-懶人

*/public class kitchen implements ichef

/*** 做飯的邏輯與小廚無關

*/@override

public void cooking()

}

這樣的寫法,好不好?

當然不好,每個類都冗餘了與他不相關的方法。例如,bigchef中的wash方法、kitchen中的cooking方法。

這種現象是怎麼導致的呢?

介面不夠最小化。介面隔離原則就是為了解決這種問題的。

我們可以寫成兩個介面,乙個是做飯的介面,乙個是洗菜的介面。

package com.fanqiekt.principle.segregation;

/** * 做飯介面

* * @author 番茄課堂-懶人

*/public inte***ce icook

做飯的介面。

package com.fanqiekt.principle.segregation;

/** * 洗菜介面

* * @author 番茄課堂-懶人

*/public inte***ce iwash

洗菜的介面。

我們再來看一下符合介面隔離原則的具體實現類。

package com.fanqiekt.principle.segregation;

/** * 大廚

* * @author 番茄課堂-懶人

*/public class bigchef implements icook

}

這樣就沒有冗餘**了。

package com.fanqiekt.principle.segregation;

/** * 小廚

* * @author 番茄課堂-懶人

*/public class kitchen implements iwash

}

小廚同樣也沒有冗餘**了。

這樣的寫法是不是更加的優雅了。

如果新增一種既洗菜又做飯的廚師型別,那同時實現icook與iwash介面就可以了。

它與單一職責原則類似,優點也是類似的。

降低風險

修改其中的乙個業務,不會影響到業務。

易維護易擴充套件

沒有冗餘**,符合介面隔離原則的介面,會更加容易擴充套件以及維護。

接下來,請您欣賞介面隔離原則的原創歌曲

嘻哈說:介面隔離原則

作曲:懶人

作詞:懶人

奮鬥了多年總算熬成了大廚才不要關心洗菜

這些瑣事都摘不掉

剛入行一兩年但兢兢業業的小廚還不到烹飪大菜

因為這些來不了

所以介面功能太多在胡鬧

介面功能應該盡可能最少

這就是介面隔離

核心思想就是介面最小

這樣才結構得體

風險降低易擴充套件維護也有格局

用起來它是絕對合理

試聽這裡閒來無事聽聽曲,知識已填腦中去;

學習複習新方式,頭戴耳機不小覷。

番茄課堂,學習也要酷。

嘻哈說 設計模式之單一職責原則

首先呢,我們來看一下單一職責原則的定義。就乙個類而言,應該只有乙個引起它變化的原因 這個說法不是很好懂,有一些抽象,不過呢,我們依舊可以嘗試著理解一下。就乙個類而言,只有乙個引起它變化的原因,也就是說,除此之外,不能有其它引起變化的原因。這樣就需要乙個前提,這個類只能負責一項職責,而不能負責其他的職...

設計模式之介面隔離原則

基本介紹 客戶端不應該依賴它不需要的介面,即乙個類對另乙個類的依賴應該建立在最小的介面上 應用例項 例1 public class segregation1 inte ce inte ce1 class b implements inte ce1 override public void opera...

java 設計模式之介面隔離原則

客戶端不應該依賴它不需要的介面 乙個類對另乙個類的依賴應該建立在最小的介面上 比如 你定義了乙個介面 public inte ce i 但是a只想實現介面中的method1方法 b只想實現介面中的method2,method3方法 c只想實現介面中的method4,method5方法 如果你這個時候...