2014-10-27 53 views
1

假设我有100种类型的对象要创建,并且我已经公开了一个工厂来创建这些对象。为了创建这些对象,我有100个if, else if具有多种条件的工厂模式

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

+3

如果您可以进一步对类进行分组,您可以使用* Abstract Factory *。另外,如果你想每个类只有一个对象,使用* Singleton *。 – TheLostMind 2014-10-27 07:13:48

回答

9

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

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

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

+0

非常好的答案!谢谢!! – 2014-10-27 08:38:59

+0

@SandeepB不客气! – Eran 2014-10-27 09:11:07