為什麼應該面向介面程式設計

2021-10-06 00:23:54 字數 968 閱讀 7158

介面是一組規則的集合,它規定了實現本介面的類或介面必須擁有的一組規則。體現了自然界「如果你是……則必須能……」的理念。

其特點是只能定義抽象方法,不可以定義具體的實現方法。

舉例:如果你是人就必須能吃飯,而不同的人吃飯的方式有所不同。

public

inte***ce

iperson

public

class

adult

implements

iperson

}public

class

child

implements

iperson

}

更進一步說:介面是在一定維度上表示同類事物。

在系統分析和架構中,分清層次和依賴關係,每個層次不是直接向其上層提供具體服務(即不是直接例項化在上層中),而是通過定義一組介面,僅向上層暴露其介面功能。

總得來說:上層對下層僅依賴抽象,而不依賴具體實現。

當下層需要改變時,只要介面及介面功能不變,則上層不用做任何修改。甚至可以在不改動上層**時將下層整個替換掉。

舉例:將乙個三星的 60g 硬碟換成乙個波士頓的 160g 的硬碟,計算機其他地方不用做任何改動,而是把原硬碟拔下來、新硬碟插上就行了,因為計算機其他部分不依賴具體硬碟,而只依賴乙個 ide 介面,只要硬碟實現了這個介面,就可以替換上去。

「開閉原則」的思想是:對擴充套件開發,對修改封閉。

使用面向介面的程式設計,用介面將具體邏輯與實現分開,減少上下層之間的依賴,發生變更時,不需要對已經編寫的系統進行改動,新增新的實現類就可以了,不再擔心新改動的類對系統的其他模組造成影響。

舉例:需要新增乙個新的活動,只需要在下層擴充套件乙個活動類並配置上去即可,而無需更改上層邏輯。

不同部件或層次的開發人員可以並行開工。

舉例:造硬碟的不用等造 cpu 的,也不用等造顯示器的,只要介面一致,設計合理,完全可以並行進行開發,從而提高效率。

敏捷專案應該面向創新嗎?

u0026 xd n u0026 xd n 敏捷與創新常被認為存在著緊密聯絡。然而,早前scrum alliance聯合創始人mike cohn批評現在的scrum因太過於關注專案進度,而犧牲了創新能力。他說 u0026 xd n u0026 xd n u0026 xd n 在九十年代中期那會兒,s...

敏捷專案應該面向創新嗎?

敏捷與創新常被認為存在著緊密聯絡。然而,早前scrum alliance聯合創始人mike cohn批評現在的scrum因太過於關注專案進度,而犧牲了創新能力。他說 在九十年代中期那會兒,scrum講究的是探索創新性方案 這是我作為scrum開發者之一對scrum的回顧 把問題交給團隊,並給他們乙個...

1 面向介面 我們為什麼要面向介面?

聽過很多朋友說起過面向介面,一般都指面向介面的程式設計,這樣說很對,程式設計中應用介面可以分離實現,實現可插拔等,那麼只有在程式設計中可以用嗎?回到起初的問題,我們為什麼要面向介面?面向介面的成本高嗎?我現在用的是物件導向 面向過程 的方法,那麼面向介面又在 它和物件導向 過程 什麼關係?我的 中為...