我已經創建了一個具有不同實現的BicycleProducer
接口:OffroadBicycleProducer
,FastBicycleProducer
等等。在屬性/上下文類中封裝屬性
這些工廠都需要很多參數來生產自行車。我想將這些屬性封裝在一個類中,並將它傳遞給produce
方法。然而,自行車需要不同的屬性 - 有些可能是相同的 - 我想知道如何正確地做到這一點。在BicycleProducer
的接口中,我目前有一個名爲produce
的方法,它採用參數BicycleProducingContext
,它是一個具有所有常用屬性的接口。然後你有實現它的實現,並根據它是什麼類型的自行車來添加必要的屬性。然後你需要將它轉換爲produce
方法......但我不知道。這似乎有點狡猾(可能不會),我覺得。
這是一個很好的方法,或者我應該以另一種方式做到這一點?
public interface BicycleProducer {
void produce(BicycleProducingContext context);
}
public class OffroadBicycleProducer implements BicycleProducer {
public void produce(BicycleProducingContext context) {
context = (OffroadBicycleProducingContext) context;
}
}
和
public interface BicycleProducingContext {
int numberOfBicycles();
void brand(String brand);
}
public class OffroadBycycleProducingContext implements BicycleProducingContext {
//..
}
顯示真實的代碼,比段落更容易閱讀 –
好的,添加了一些示例代碼(修剪版本)。 – LuckyLuke
看起來像雙派遣...也許你應該調整*訪問者*以適應你的情況。 –