工厂模式有很多条件

时间:2014-10-27 07:12:03

标签: java design-patterns

假设我有100种类型的对象要创建,为此我公开了一个工厂来创建这些对象。为了创建这些对象,我有100个if, else if

在这些要创建许多类型对象的场景中(当然你想为每个类创建一个对象),是否有更好的创建模式?

1 个答案:

答案 0 :(得分:9)

如果您选择要实例化的类有一个标准,则可以创建一个Map<CriteriaType,Class>,将标准映射到应该实例化的类。

然后,您的100 if else-ifs将缩减为单map.get(criteria).newInstace()

如果您有多个条件,可以尝试将它们排列在层次结构中,然后您可以拥有一个多维地图,例如Map<CriteriaType1,Map<CriteriaType2,Class>>。然后你必须沿着层次结构找到要实例化的类。