假设我有100种类型的对象要创建,并且我已经公开了一个工厂来创建这些对象。为了创建这些对象,我有100个if, else if
。具有多种条件的工厂模式
在这些类型的场景,许多类型的对象被创建(当然你要创建的每一个类的对象),有没有更好的创建模式?
假设我有100种类型的对象要创建,并且我已经公开了一个工厂来创建这些对象。为了创建这些对象,我有100个if, else if
。具有多种条件的工厂模式
在这些类型的场景,许多类型的对象被创建(当然你要创建的每一个类的对象),有没有更好的创建模式?
如果您选择要实例化哪个类的单个标准,您可以创建一个Map<CriteriaType,Class>
,它将标准映射到应该实例化的类。
然后,您的100个if if-ifs将减少为单个map.get(criteria).newInstace()
。
如果您有多个条件,您可以尝试他们在一个层次安排,然后你可以有一个多维地图,如Map<CriteriaType1,Map<CriteriaType2,Class>>
。然后你必须沿层次结构找到要实例化的类。
非常好的答案!谢谢!! – 2014-10-27 08:38:59
@SandeepB不客气! – Eran 2014-10-27 09:11:07
如果您可以进一步对类进行分组,您可以使用* Abstract Factory *。另外,如果你想每个类只有一个对象,使用* Singleton *。 – TheLostMind 2014-10-27 07:13:48