Java 接口學習

接口其實蠻早就瞭解過了,這次深入看了下。還是有所收穫,接口其實在java模式設計中有重要作用。主要是學到了與接口相關的幾種設計模式。


首先,接口的存在還是爲了彌補java中單繼承的不足的。比如,魚既是一種動物又是一種食物,那麼它具有兩個類的特點,但是卻又沒辦法同時繼承,然而有了接口的話,可以通過繼承一個類,然後再實現另外一個接口就可以了。但是,到底是弄成Animal接口還是Food接口呢?這得從本質上看,魚本質上是一種動物,其次纔是一種食物,那麼我們讓它繼承Animal類,並實現Food接口。


接口的一些規則:

1.接口中的成員變量默認都是public, static, final類型的。必須全部顯式初始化,並且只能是這樣。

2.接口中的方法默認都是public, abstract類型的,並且只能這樣。如:void method();

3.接口沒有構造函數,不能被實例化。

4.一個解耦不能實現另一個藉口,但是他可以繼承多個其他接口。


因爲同是高度抽象,所以接口常被拿來與抽象類作比較。它們的區別有:

1.抽象類可以爲部分方法提供默認的實現,從而避免在子類中重複實現他們,從而提高代碼的可重用性;而接口中只能包含抽象方法

2.類只能單繼承,也就是說只能繼承一個抽象類;而一個類可以實現多個接口


接口相關的設計模式:

1.定製服務模式。將服務精粒度化,然後用組合的方式粗粒度化接口。

2.適配器模式。當源接口和目標接口的方法不一致時,可是設置一個適配器類來實現接口的轉換。有兩種實現方式:1.繼承實現方式;2.組合實現方式。 通常使用組合實現方式,因爲組合關係比繼承關係松耦合程度更高。

3.默認適配器模式。由於接口中的方法都是抽象的,那麼實現類要麼全部實現,要麼部分實現然後將自己聲明爲抽象類。然後應用中我們很可能只用到接口中的少量方法,這樣就會很麻煩,可以提供一個默認的類,它實現了接口的所有方法,但是是空實現。在使用的時候,我們可以以繼承或者匿名類的方式覆寫需要的方法即可。

3.代理模式。在委託方和第三方之間可以設置一個代理類來預處理、過濾和轉發消息。特點是委託類和代理類有同樣地接口,委託類和代理類是組合關係。一般代理類的方法在被調用後,最後都會調用委託類的方法。這樣設計的原因是比如對象分佈在不同機器上,即運行在不同的JVM進程中時,頻繁的遠程通信的效率會很低,那麼代理類就可以通過預處理、過濾、轉發來提高系統響應效率。

4.標識類型模式。這種接口不包含任何方法,它僅僅代表一種抽象類型,例如Food,所有實現Food接口的類,說明他們都是實物。

5.常量接口模式。類中只有常量。可以通過import static xxinterface.*; 來使用當中的常量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章