Я пытаюсь использовать шаблон фабричного метода для создания разных объектов, но у меня есть несколько сомнений. Покажу сценарий:
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){}
}
Я немного запутался с Param3 в методе createObject ObjectFactory. У меня всегда есть этот параметр, но иногда это не имеет смысла. Мне это не нравится, потому что, если когда-нибудь я добавлю больше объектов с другими параметрами, мне нужно будет добавить слишком много параметров в сигнатуру метода.
Я думал об определении: общедоступный статический IObject createObject (Param1 p1, Param2 p2, Param3 p3) общедоступный статический IObject createObject (Param1 p1, Param2 p2), но тогда это не шаблон фабричного метода, потому что вызывающий должен знать, какой метод должен быть казненным.
Знаете ли вы какое-либо решение, чтобы справиться с этим?
Заранее спасибо.