我必须使用单件工厂模式。 我的工厂类根据枚举类型创建两个不同的对象。
返回正确对象的最佳方法是什么。
解决方案1:通过工厂中的if-else决定:
if(enumType == "objectA") return new objectA()
解决方案2:enum类有一个返回函数:
enum ObjectType{ ObjectA{ .. return new ObjectA()..}}
thx,迈克
答案 0 :(得分:7)
在枚举上写一个函数。这样,当您添加新枚举时,您不会忘记为工厂方法添加子句。
作为一项规则,对于几乎任何解决方案,我都倾向于对if
/ else if
等序列进行多态和方法实现。它更不容易出错,并且会在编译时捕获问题,而不是运行时。
答案 1 :(得分:0)
如果你只能有一个类的两个实例,我会使用一个枚举,除非它需要另一个类作为超类。