2010-10-07 68 views
0

我有一個Java類,可以擴展兩個第三方類,我不能改變。我可以在編譯時選擇這些實現中的任何一個,除了「extends」聲明之外,我的類沒有任何更改。不幸的是,我需要選擇在運行時使用哪種實現,而不是在編譯時。在運行時選擇這兩個實現而不重複整個派生類的最佳方式是什麼?擴展多個Java類不重複

+2

因此,您有兩個第三方類具有完全相同的方法簽名,但沒有通用接口? – BalusC 2010-10-07 23:06:11

回答

5

這聽起來像你需要一個Strategy pattern

策略模式(也稱爲 策略圖案)是一個特定 設計模式,由此 算法可以在運行時被選擇。

因此,您的Java類應該包含對您要使用的兩個類之一的引用,並且橋接到該實現。您選擇的實現可以在運行時選擇。從你的問題描述中不清楚,但是如果你的兩個第三方類實現了一個通用接口,那麼你的Java類很可能會實現這個接口,並且你可以直接映射到被引用的第三方類。