【发布时间】:2016-11-03 00:10:50
【问题描述】:
我正在尝试使用工厂方法模式来创建不同的对象,但我有几个疑问。让我给你看一下场景:
public class ObjectFactory{
public static IObject createObject(Param1 p1, Param2 p2, Param3 p3){
if (p1.getName('name1')){
return new Object1(p1,p2,p3);
}else{
return new Object2(p1, p2);
}
}
}
public interface IObject{
void doSomething();
}
public class Object1 implements IObject {
public Object1(Param1 p1, Param2 p2, Param3 p3){}
}
public class Object2 implements IObject {
public Object1(Param1 p1, Param2 p2){}
}
我对 ObjectFactory 的 createObject 方法中的 Param3 有点困惑。我总是有这个参数,但有时它没有意义。 我不喜欢这样,因为如果有一天我添加更多具有不同参数的对象,我将需要在方法签名中添加太多参数。
我正在考虑定义: 公共静态 IObject createObject(Param1 p1,Param2 p2,Param3 p3) 公共静态 IObject createObject(Param1 p1, Param2 p2) 但它不是工厂方法模式,因为调用者必须知道必须执行哪个方法。
你知道解决这个问题的任何方法吗?
提前致谢。
【问题讨论】:
-
看看 Builder 模式:en.wikipedia.org/wiki/Builder_pattern
标签: java parameters factory-method