【发布时间】:2009-05-13 00:53:50
【问题描述】:
假设我有一个抽象类 Drink,以及一个工厂方法,它选择在运行时创建的饮料类型(葡萄酒、啤酒等)。
每个 Drink 都需要一些参数来正确初始化自己。其中一些是所有饮料共有的;例如,它们可能都需要 DrinkConfig 参数。
但每种饮品也可能有其独特的要求。也许 Wine 需要一个侍酒师辅助对象来初始化自己。 Beer 不需要它,但它可能需要它自己的辅助对象。
那么我应该将什么传递给工厂方法?当我调用它时,我拥有所有可用的辅助对象,所以我可以将它们全部传递给工厂。但这最终可能会引发很多争论。有没有更好的设计方法?
编辑:假设我不能只在工厂中创建辅助对象;它们只能从调用者那里获得。
【问题讨论】: