考慮: - 需要在同一界面相同的接口,實現差異
Unluck下聚集不同的實現方式:這些實現有一個方法「創造」,但具有不同數量和類型的輸入PARAMS
解決方案....? 除了Object的可變參數還有什麼其他選項?
考慮: - 需要在同一界面相同的接口,實現差異
Unluck下聚集不同的實現方式:這些實現有一個方法「創造」,但具有不同數量和類型的輸入PARAMS
解決方案....? 除了Object的可變參數還有什麼其他選項?
假設你只想要一個,你正打算
創建一個實現你正打算在接口的包裝類的接口下創建方法。現在根據一些條件從包裝類調用各種實現。
對於Maintainabilty視角
如果可能避免的條件和調用代碼發送的實現類名。只是從調用代碼調用作爲參數傳遞類的創建方法。(在這裏也需要創建虛擬創建方法與某些對象類參數,它包含了所有它只是代表調用意法所需數量則params的)
如果該方法非常靈活,似乎沒什麼意義,試圖強制每個實現類下的參數它通過一個接口。然而,你可以做的是實現一個接口來描述你想傳遞的不同類型的參數。
例如
public abstract create(CreateParamsInterface cpi) {};
,然後實現在你的類抽象方法,使用暴露VA CreateParamsInterface
爲相關成員。
謝謝你的回答。我不確定我瞭解如何使用接口。比方說,我有一個字符串用於一些調用,而另一個我有Long和BigDecimal。 – Roxana
在接口方面提供了需要的條件作爲基礎,其中你可以決定創建要調用哪個版本的參數的方法。根據條件你可以調用相應的create()函數。邏輯與Factory design pattern相同。
我看到三個選項:
create()
。所以你只需要將參數添加到實現包含create()
的接口的對象的構造函數中。create()
對象。這樣你應該有接口create(ObjectWhichWantsCreation x)
,這個方法將從給定的對象中獲取所有必要的數據。create(Properties p)
,其屬性:http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html這是很普通的,但你必須確保它們包含所需的數據。可以修改2和3,使他們有方法create()
,只是添加另一種方法setParams(SomeParams...)
這首先需要調用。
你可以使用一個[公司](http://en.wikipedia.org/wiki/Abstract_factory_pattern) –
您可以使用像一個生成器模式,這可能是矯枉過正。但真正的問題似乎在你的界面! – Thihara
問題是我在方法簽名中沒有相同數量/類型的參數.... – Roxana