什麼是面向接口編程呢?我我的的定義是:在系統分析和架構中,分清層次和依賴關係,每一個層次不是直接向其上層提供服務(即不是直接實例化在上層中),而是經過定義一組接口,僅向上層暴露其接口功能,上層對於下層僅僅是接口依賴,而不依賴具體類。html
這樣作的好處是顯而易見的,首先對系統靈活性大有好處。當下層須要改變時,只要接口及接口功能不變,則上層不用作任何修改。甚至能夠在不改動上層代碼時將下層整個替換掉,就像咱們將一個WD的60G硬盤換成一個希捷的160G的硬盤,計算機其餘地方不用作任何改動,而是把原硬盤拔下來、新硬盤插上就好了,由於計算機其餘部分不依賴具體硬盤,而只依賴一個IDE接口,只要硬盤實現了這個接口,就能夠替換上去。從這裏看,程序中的接口和現實中的接口極爲類似,因此我一直認爲,接口(interface)這個詞用的真是神似!編程
使用接口的另外一個好處就是不一樣部件或層次的開發人員能夠並行開工,就像造硬盤的不用等造CPU的,也不用等造顯示器的,只要接口一致,設計合理,徹底能夠並行進行開發,從而提升效率。架構
面向接口編程的好處是,實現代碼依賴接口,而不依賴具體的實現類,方便程序的擴展。.net
抽象類和接口的區別在於使用動機。使用抽象類是爲了代碼的複用,而使用接口的動機是爲了實現多態性。設計
參考文章:htm