【发布时间】:2011-03-09 20:00:33
【问题描述】:
是否可以让具体工厂使用抽象工厂模式为它们创建具有类型特定参数的具体类?还是各自具体工厂创建的不同具体类需要有相同的字段?
例如)在下图中,您将如何使用客户端(应用程序)给出的不同参数集来实例化 WinButton 和 OSXButton?
【问题讨论】:
标签: oop design-patterns language-agnostic factory-pattern
是否可以让具体工厂使用抽象工厂模式为它们创建具有类型特定参数的具体类?还是各自具体工厂创建的不同具体类需要有相同的字段?
例如)在下图中,您将如何使用客户端(应用程序)给出的不同参数集来实例化 WinButton 和 OSXButton?
【问题讨论】:
标签: oop design-patterns language-agnostic factory-pattern
解决此类问题的方法之一是发送对象参数。例如,在 C# 中,Object 是基类,您可以传递 Object 类型的参数,该参数可以采用任何派生类。在实现中,可以将此对象转换回所需的派生类型。甚至可以通过这种方式设置特定属性。
【讨论】:
如果没有更多细节,这并不容易。我会做的一件事是尝试将参数传递给具体工厂类的构造函数。对于不同的参数,您必须创建不同的工厂实例,这可能不是最好的解决方案,但如上所述,这取决于细节。
例子:
GUIFactory factory = new WinFactory(WIN_9x_THEME); 按钮 grayButton = factory.createButton(); 工厂=新WinFactory(WIN_VISTA_THEME,50); 按钮 semiTransparentButton = factory.createButton();【讨论】: