我絕對無法解釋我在標題中的含義。這個問題要麼太愚蠢,要麼太複雜,但最終的結果是我找不到合適的設計模式。如何創建接口的實現,即使用其他接口的特定實現?
因此,我們假設我們有類A,它包含對接口B的引用。計算過程確定B的哪個實現是適當的,並實例化一個新對象。到目前爲止這麼好(我認爲)。
現在B有一個基於一組參數的方法。對象A擁有一組默認參數,但任何一組都可以按需提供。棘手的部分是參數在接口B的實現中完全不同。事實上,這些參數本身具有不同的對象,它們各自的方法在B的不同實現方式中是不同的。對我來說,最初的方法是創建一個接口C參數,然後爲B的每個實現(它是一對一的關係)創建一個C的實現,但這看起來不正確。如果不是別的,在B的每個獨特實現中,我必須將C投影到調用其獨特函數所需的相應實現上。
人們只能假設有更漂亮的方式!有任何想法嗎?
因此,我在其各自的類中實現了每個Param,並通過一個包含B和一個默認Param對象的實現的包裝向外界展示。那麼它不是最直觀的實現,但如果你認爲它是正確的,我可能會去做! –
@Andreas:我不是說這是唯一的方法。這只是一個例子,你如何呈現一個一致的界面而不需要醜陋的表演。 –
我對這個實現有兩個問題。首先是在包裝內部,除非'doSomething'是靜態的,否則我不能做'ConcreteB.doSomething(params)'!那麼我也想知道,你爲什麼最終做出「params」? –