【发布时间】:2013-08-15 14:31:54
【问题描述】:
我想问在这种情况下是否推荐使用(抽象)Factory Pattern:我有 20 个Products,所有这些都由派生自超类BaseProduct 的单独类表示。 Products 分为 5 个Categories,每个都由一个派生自超类BaseCategory 的单独类表示。每个Product 都属于一个特定的Category。 Product 的创建仅在其Category 中有意义且技术上执行,因此相应的Category 必须在Product 的实例化之前实例化。但是,如果没有 Product,Category 不能在应用程序中“独立”。通过检查String 来确定要创建的Product 和Category 的选择。为避免客户端中出现大量 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();
...
}
}
我担心的是如何在每个 Category 中创建 Products。我是否应该在Category 类的构造函数中传递String 并在类别中应用类似的Factory?我应该将Factory 用于Products 并将其作为Category 的构造函数中的参数提供吗?有没有更好的方法来解决整个问题?请记住,在创建 Category 后,我无法创建 Product。当我在客户端中创建Category 时,它必须同时创建并包含它的Product。
【问题讨论】:
-
您确定为每个产品和每个类别设置不同的类别是正确的选择吗?如果您添加这两个类的代码会有所帮助,这样我们就可以看到我们在说什么。
-
它们是用户界面上的小部件,小部件“类别”包含一个小部件“产品”。他们的代码看起来如何与我的问题所关注的设计无关。
-
这是我质疑的设计,这就是我要求一些代码的原因。从您的示例中,您的类别似乎是标记类,即我看到了空的构造函数,我想知道两个类别之间的功能差异是什么。如果您说您信任当前的设计,那没关系。
标签: java oop design-patterns factory-pattern