我创建了一个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 {
    //..
}