从使用“List list = new ArrayList()”而不是“ArrayList list = new ArrayList()”看面向接口编程
1、問(wèn)題就在于List有多個(gè)實(shí)現(xiàn)類(lèi),如 LinkedList或者Vector等等,現(xiàn)在你用的是ArrayList,也許哪一天你需要換成其它的實(shí)現(xiàn)類(lèi)呢?,這時(shí)你只要改變這一行就行了:List list = new LinkedList(); 其它使用了list地方的代碼根本不需要改動(dòng)。假設(shè)你開(kāi)始用 ArrayList alist = new ArrayList(), 這下你有的改了,特別是如果你使用了 ArrayList特有的方法和屬性。 ,如果沒(méi)有特別需求的話,最好使用List list = new LinkedList(); ,便于程序代碼的重構(gòu). 這就是面向接口編程的好處。
2、接口是一組規(guī)則的集合,它規(guī)定了實(shí)現(xiàn)本接口的類(lèi)或接口必須擁有的一組規(guī)則。體現(xiàn)了自然界“如果你是……則必須能……”的理念。
如果你是人類(lèi),則必須能吃飯。
3、在系統(tǒng)分析和架構(gòu)中,分清層次和依賴關(guān)系,每個(gè)層次不是直接向其上層提供服務(wù)(即不是直接實(shí)例化在上層中),而是通過(guò)定義一組接口,僅向上層暴露其接口功能,上層對(duì)于下層僅僅是接口依賴,而不依賴具體類(lèi)。就像我們將一個(gè)WD的500GB硬盤(pán)換成一個(gè)希捷的1TB的硬盤(pán),計(jì)算機(jī)其他地方不用做任何改動(dòng),而是把原硬盤(pán)拔下來(lái)、新硬盤(pán)插上就行了,因?yàn)橛?jì)算機(jī)其他部分不依賴具體硬盤(pán),而只依賴一個(gè)IDE接口,只要硬盤(pán)實(shí)現(xiàn)了這個(gè)接口,就可以替換上去。
4、面向接口編程可以降低程序之間的耦合度,是指在具體的調(diào)用處都是接口進(jìn)行的,并不依賴于具體類(lèi)
總結(jié)
以上是生活随笔為你收集整理的从使用“List list = new ArrayList()”而不是“ArrayList list = new ArrayList()”看面向接口编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: idea 2019.2 版本更新(最顶部
- 下一篇: 日志信息jar包 slf4j-api、