針對介面程式設計,而不要針對實現程式設計,老生常談呢。不過在今天之前,我卻並未能領悟其道理;即使在今天,我也未必完全掌握了這句話的精髓。
一直認為,合適的示例是學習的最好老師,今天這句話又得到了驗證。過去對於針對介面程式設計未能領會,很大程度上是因為沒有遇到合適的說明這個問題的例子,今天終於遇到了。我們先來看看這個例子:
1//針對實現程式設計
2dog d
=new
dog();
3d.bark();45
//針對介面程式設計
6animal animal
=new
dog();
7animal.makesound();
其中針對介面程式設計部分的各個類之間的關係圖如下所示:
當採用針對實現程式設計方式時,我們必須新建乙個具體的dog類,然後呼叫bark方法;而採用針對介面程式設計的方式時,我們可以利用dog類的建構函式生成乙個animal物件,由於多型性,當animal物件呼叫makesound方法時自然會呼叫dog類的方法,從而實現了對bark方法的呼叫。兩種方法殊途同歸,然而其效用卻並不相同。採用後者時,我們可以更好的實現**的重用,而且有助於隔離變化,擴充套件性和靈活性好;採用前者,雖然更加的清晰、明確,但對於每類animal,即使他們相互之間有很多共同的元素,也必須在他們相應的類中加以實現,完全不能重用**,更重要的是不能反應出這些animal的共同特徵。
技術討論 關於針對介面程式設計的建築模式比喻
大漠孤煙 22 08 51 你好,請問 針對介面程式設計,不要針對類程式設計,是有好處,具體實現可以隨便怎麼去實現。可介面改變怎麼辦呢?青潤 22 10 13 呵呵。你這個問題呵呵。打個比方吧 你在珠穆朗瑪峰上面蓋了一棟樓,結果,珠穆朗瑪峰變成了大海,你怎麼辦?青潤 22 10 41 如果不是變成大...
針對http介面訪問超時處理
如果你參加過網際網路專案,那麼你一定知道,整個大的系統會被切成許多的子系統。子系統與子系統通過接 互。其中,通過http接 互,是非常常用的一種方式。那麼如果呼叫某個子系統的http介面超時了,該如何處理呢?下面列舉一下。假設a系統有個方法methoda,會呼叫b系統的methodb這個http介面...
程式設計的總結針對自己的
程式設計其實真的要每天堅持,不然的話就是天天都有理由偷懶,或者說是可以放鬆對自己的要求。從另外的角度來說,能堅持每天寫的話,至少可以鍛鍊下自己的毅力,可以不讓自己生疏了那些技巧,而且可以積累相關的程式設計能力,就像是練習唱歌一樣,不連的話就有可能退化了,所以,希望和我在同一起跑線的人都要繼續堅持,下...