3 回答

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您不打算使用它,則無(wú)需創(chuàng)建接口。
通常,在以下情況下需要接口:
您的程序?qū)槟慕M件提供幾種實(shí)現(xiàn)。例如,默認(rèn)實(shí)現(xiàn)是代碼的一部分,而模擬實(shí)現(xiàn)是在JUnit測(cè)試中使用的。一些工具會(huì)自動(dòng)創(chuàng)建模擬實(shí)現(xiàn),例如EasyMock。
您想通過(guò)諸如Spring或JBoss Micro-Container之類的框架對(duì)此類使用依賴注入。在這種情況下,最好使用一個(gè)接口指定一個(gè)類與其他類的依賴關(guān)系。

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
每個(gè)類都提供一個(gè)非私有API,但確實(shí)實(shí)現(xiàn)了一個(gè)接口(即合同)。是否選擇將接口表示為Java接口取決于實(shí)現(xiàn)是否為“變化的概念”。
如果您完全確定只有一種合理的實(shí)現(xiàn),則不需要接口。否則,界面將允許您更改實(shí)現(xiàn)而無(wú)需更改客戶端代碼。
假設(shè)您以后對(duì)新的要求有完全的控制權(quán),那么有些人會(huì)大喊“ YAGNI”。其他人會(huì)公平地?fù)?dān)心,他們將需要更改不變的-已發(fā)布的API。
如果您不實(shí)現(xiàn)接口(并使用某種工廠進(jìn)行對(duì)象創(chuàng)建),則某些類型的更改將迫使您違反開(kāi)放式封閉原則。在某些情況下,這在商業(yè)上是可以接受的,在其他情況下則不是。
您能描述一下使用接口不是一個(gè)好主意的情況嗎?
在某些語(yǔ)言中(例如C ++,C#,但不包括Java),如果您的類不包含虛擬方法,則可以提高性能。
在小型程序中,或者在沒(méi)有發(fā)布API的應(yīng)用程序中,維護(hù)單獨(dú)的接口的成本可能很小。
如果由于將接口和實(shí)現(xiàn)分開(kāi)而導(dǎo)致復(fù)雜性顯著增加,則可能未將接口用作合同。接口降低了復(fù)雜性。從消費(fèi)者的角度來(lái)看,組件成為滿足合同條款的商品,而不是本身具有復(fù)雜實(shí)施細(xì)節(jié)的實(shí)體。
添加回答
舉報(bào)