将工厂模式应用于两个级别

时间:2013-08-15 14:31:55

标签: java oop design-patterns factory-pattern

我想询问在这种情况下是否推荐使用(摘要)Factory Pattern:我有20 Products所有这些都由一个单独的类表示,该类派生自超类{{ 1}}。 BaseProduct分为5 Products,每个Categories也由一个单独的类表示,该类派生自超类BaseCategory。每个Product都属于一个特定的CategoryProduct的创建仅在其Category中有意义且技术上执行,因此必须在Category的实例化之前实例化相应的Product。然而,Category不能独立而且#34;在没有Product的应用程序中。选择要创建的Product以及Category是通过选中String来确定的。为避免客户端中出现大量if-else代码,我更倾向于使用Factory Pattern来创建类别:

    class CategoryFactory{

       static Category createCategory(String s){

        if(s.equals("foo"))
            return new Category1();
        else if (s.equals("bar"))
            return new Category2();
        ...

         }
        }

我担心的是我如何解决每个ProductsCategory的创建问题。我应该在String类的构造函数中传递Category并在类别中应用类似的Factory吗?我应该Factory使用Products并在Category的构造函数中将其作为参数提供吗?对整个问题有更好的方法吗?请注意,创建Product后我无法创建Category。当我在客户端中设置Category时,它必须同时创建并包含其Product

1 个答案:

答案 0 :(得分:2)

你可以这样做。如果2 Category具有相似或相同的方式来生成getProductFactory(),那么让Categories至少以这种方式调用类似Products的方法可能会更清晰使用工厂。

相关问题