など、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 {
//..
}