如何为抽象工厂创建的类设置特定属性?

时间:2010-06-29 20:16:50

标签: oop design-patterns language-agnostic factory-pattern

是否可以让具体工厂使用抽象工厂模式为它们创建具有特定类型参数的具体类?或者各个具体工厂创建的不同具体类是否需要具有相同的字段?

例如)在下图中,您将如何使用客户端(应用程序)给出的不同参数集来实例化WinButton和OSXButton?

enter image description here

2 个答案:

答案 0 :(得分:0)

解决此类问题的方法之一是发送对象参数。例如,在C#Object中是基类&你可以传递Object类型的参数,它可以接受任何派生类。在实现中,可以将此对象转换回所需的派生类型。甚至可以通过这种方式设置特定属性。

答案 1 :(得分:0)

如果没有更多细节,这并不容易。我要做的一件事是尝试将参数传递给具体工厂类的构造函数。对于不同的参数,您必须创建不同的工厂实例,这可能不是最佳解决方案,但如上所述,这取决于细节。

示例:

    GUIFactory factory = new WinFactory(WIN_9x_THEME);
    Button greyButton = factory.createButton();
    factory = new WinFactory(WIN_VISTA_THEME, 50);
    Button semiTransparentButton = factory.createButton();