我有一個工廠方法,它返回接口的實現。事情是 - 實現具有不同的構造函數參數。將屬性傳遞給工廠方法
我的問題是 - 如何通過工廠方法傳遞參數到接口的不同實現?
我有一個想法,但我不知道是否有道理 - 將Properties對象傳遞給工廠方法?這樣,每個接口實現都可以獲得構造函數所需的屬性,而工廠接口將被統一。
這是否有意義,還是有更好的解決方案?
我決定加一個例子,所以我可以更好地澄清這個問題。假設我們有接口SomeAlgorithm
,並且我們有具體的算法,其中每個算法可以具有不同的參數,例如,
SomeAlgorithm algo = new Algo1();
SomeAlgorithm algo = new Algo2(noOfIterations);
SomeAlgorithm algo = new Algo3(precision, boundary);
我希望能夠像做
SomeAlgorithm algo = AlgoFactory.getAlgo("algoName");
我的方法來處理不同的參數會
SomeAlgorithm algo = AlgoFactory.getAlgo("algoName", properties);
然後,AlgoFactory可以通過相應的屬性具體算法的構造,如果算法有參數(例如,Algo1沒有參數)。如果某些屬性不存在,則可以傳遞一個默認值(如果該算法中需要該值)。
正如你所看到的,我希望能夠動態地改變算法。用戶將在運行時選擇算法並傳遞適當的參數,這些參數將被放入屬性對象中。
這是否合理?
怎麼樣超載工廠方法? –
只有接口實現的屬性纔會有所不同,或者它們是否因呼叫而異? – dbugger
如果您需要將不同數量的參數傳遞給構造函數,最有可能您的設計不完美。如果你提供兩個不同參數類的例子,這將是非常好的 –