開發中經常遇到的乙個需求是,處理不同種類的資料,但是完成的功能是相似的,功能隨著傳入型別的不同而變化
1、定義介面:定義乙個介面,編寫不同的實現類
(1)使用場景:完成功能相同,引數也類似,只是內部的實現邏輯不同,可以編寫介面實現的配置類,使用時動態獲取實現類
(2)缺點:資料的型別必須確定
(3)舉例:處理檔名有兩種處理方式
2、使用泛型:
(1)使用場景:引數型別使用泛型是對第一種方法在引數上的強化
3、spi機制:服務註冊發現機制
(1)使用場景:不關心使用者的輸入引數型別,使用者只關心相互局輸入後得到輸出結果
1、建立指定的資料夾:【/resources/meta-inf/services
】介面的全限定名,spi內部載入實現類的時候指定了該掃瞄目錄
2、可以實現擴充套件的熱插拔:需要新增擴充套件只需要擴充套件實現該介面,打包成mvn依賴新增即可
3、jdbc、dubbo等的實現都是基於spi的機制實現的
java spi機制(動態介面實現)
spi 全稱為 service provider inte ce 是jdk內建的一種服務提供發現機制。目前有不少框架用它來做服務的擴充套件發現,簡單來說,它就是一種動態替換發現的機制,舉個例子來說,有個介面,想執行時動態的給它新增實現,你只需要新增乙個實現,而後,把新加的實現,描述給jdk知道就行啦...
C 中虛函式功能的實現機制
c 中虛函式功能的實現機制 要理解c 中虛函式是如何工作的,需要回答四個問題。1 什麼是虛函式。虛函式由於必須是在類中宣告的函式,因此又稱為虛方法。所有以virtual修飾符開始的成員函式都成為虛方法。此時注意是virtual修飾的成員函式不是virtual修飾的成員函式名。例如 基類中定義 vir...
C 中虛函式功能的實現機制
要理解c 中虛函式是如何工作的,需要回答四個問題。1 什麼是虛函式。虛函式由於必須是在類中宣告的函式,因此又稱為虛方法。所有以virtual修飾符開始的成員函式都成為虛方法。此時注意是virtual修飾的成員函式不是virtual修飾的成員函式名。例如 基類中定義 virtual void show...