工厂模式有很多条件

San*_*p B 1 java design-patterns

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

在这种情况下,要创建许多类型的对象(当然,您希望每个类创建一个对象),是否有更好的创建模式?

Era*_*ran 10

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

然后,你的100 if else-ifs将减少到一个map.get(criteria).newInstace().

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