假设我有一个抽象类Drink,以及一个工厂方法,在运行时选择要创建的饮料类型(葡萄酒、啤酒等)。
每种饮料需要一些参数才能正确初始化自己。其中一些对所有饮料都是通用的;例如,它们可能都需要一个DrinkConfig参数。
但是每种饮料可能还有自己独特的要求。也许葡萄酒需要Sommelier助手对象来初始化自己。啤酒不需要这个,但它可能需要自己的助手对象。
那么我应该传递什么给工厂方法呢?当我调用它时,我拥有所有助手对象,因此我可以将它们全部传递给工厂。但这可能会有很多参数。有没有更好的设计方式?
编辑:假设我不能在工厂中创建助手对象;它们只能从调用者那里获得。
每种饮料需要一些参数才能正确初始化自己。其中一些对所有饮料都是通用的;例如,它们可能都需要一个DrinkConfig参数。
但是每种饮料可能还有自己独特的要求。也许葡萄酒需要Sommelier助手对象来初始化自己。啤酒不需要这个,但它可能需要自己的助手对象。
那么我应该传递什么给工厂方法呢?当我调用它时,我拥有所有助手对象,因此我可以将它们全部传递给工厂。但这可能会有很多参数。有没有更好的设计方式?
编辑:假设我不能在工厂中创建助手对象;它们只能从调用者那里获得。
enum ClassesEnum
和相应的ClassSpecificConfig
的爆炸,这是不可避免的吗?也许在php/python中可以将ClassConfig
声明为array
/dict
,但是强类型/静态语言怎么办?(以及ClassesEnum,如果我们也能摆脱它) - Sudhi