我会在你的工厂类中创建不同的重载方法。
public class DrinkFactory {
public static Drink CreateBeer(DrinkConfig config, string hops) {
return new Beer(config, hops);
}
public static Drink CreateWine(DrinkConfig config, string grapes, int temperature) {
return new Wine(config, grapes, temperature);
}
}
编辑:
如果希望在 Factory 类中只有一个方法,则替代实现将是:
public enum DrinksEnum {
Beer,
Wine
}
public class DrinkFactory {
public static Drink CreateDrink(DrinksEnum drinkType, DrinkConfig config) {
switch(drinkType) {
case DrinksEnum.Beer:
return new Beer(config);
case DrinksEnum.Wine:
return new Wine(config);
default:
throw new ApplicationException("Drink type not recognised.");
}
}
}