關於Java介面解耦的個人理解
阿新 • • 發佈:2019-01-06
在談介面解耦之前先談談耦合這個概念;
耦合是什麼?通俗來講耦合就是依賴關係;某某耦合說明這兩者的依賴性很強,誰也離不開誰;而解耦就是要把這層依賴關係給破壞掉;
介面解耦顧名思義就是利用介面來進行解耦,那如何解耦呢?首先要明白為什麼要選擇介面?
Java這門語言是“單繼承的”,如果一個主呼叫類要使用另一個類中的某個方法,繼承然後就可以重寫這個方法;但此時這個主呼叫類又發現了自己需要另外一個類中的某個方法時,它已經不能去繼承他來重寫這個方法,因為單繼承的原因,導致一個主呼叫類想實現多種多樣的功能都不行;而“多介面”的概念正好彌補了這個缺陷;舉個例子:如果一臺電腦想要通過印表機列印,電腦想用惠普印表機,又想用三星印表機,又想用其他印表機;如果使用繼承,則電腦不能實現由多種印表機列印並且與繼承的那個印表機之間的耦合度相當高;使用介面(功能的集合);介面中定義一個列印方法;各種印表機去實現這個介面,重寫這個列印方法(重寫一個屬於自身的列印方法);而電腦(主呼叫類)想去呼叫列印方法,則需要在自身的類中注入這個介面的屬性,通過介面屬性去呼叫的列印方法,至於會呼叫那臺印表機則由實際傳參來決定;站在電腦的角度上,它完全不關心用誰列印,它只關心列印這個方法,不關注誰去實現這個列印方法。此時電腦和印表機之間的依賴關係大大減少。這就是利用介面進行解耦。
以上是個人的理解看法,如有其它見解,還望大神們不吝賜教!