0


我必须将工厂模式与单例一起使用。我的工厂类根据枚举类型创建两个不同的对象。

返回正确对象的最佳方法是什么。

解决方案 1:通过工厂中的 if-else 决定:

if(enumType == "objectA") return new objectA()

解决方案2:枚举类有返回函数:

enum ObjectType{ ObjectA{ .. return new ObjectA()..}}

谢谢,迈克

4

2 回答 2

7

在枚举上写一个函数。这样,当你添加一个新的枚举时,你就不会忘记在你的工厂方法中添加一个子句。

作为一项规则,对于几乎任何解决方案,我都倾向于多态性和方法实现而不是if/等序列。else if它更不容易出错,并且问题将在编译时而不是运行时被发现。

于 2012-10-22T11:36:04.207 回答
0

如果你只能有一个类的两个实例,我会使用 Enum,除非它需要另一个类作为超类。

于 2012-10-22T11:36:50.950 回答