Java 有個東西叫 ServiceLoader,透過 META-INF 目錄底下的檔案設定,來決定要讀進哪一個 class 的實作,這是我直覺想到的東西。
看你的問題,我覺得有幾個名詞可能會產生誤解。譬如說「版本抽換」,很容易被想成 version replacement,我猜你想表達的是 implementation replacement。雖然說不同的 version 也隱含著不同的 implementation,但是 version 通常用在產品版本的語意,如果是在工程或架構上面的替換,我建議使用 implementation (實作)。 ...