Я ищу улучшенное решение следующей проблемы. У меня есть объект, который передается на завод; фабрика проверит тип объекта, создаст другой тип, который он заполняет данными из входящего объекта и возвращает новый.Устранение экземпляра в заводском методе
...
public MyAbstractClass create(MyObject a) {
if (a instanceof A) {
A obj = (A) a;
return new MyAbstractClass_1 (obj.getField(), factoryField);
}
else if (a instanceof B) {
B obj = (B) a;
return new MyAbstractClass_2 (obj.getSomething(), obj.getSomethingElse(), factoryField);
}
}
Экземпляры типа возврата обрабатываются в общих чертах послесловия. В будущем мне нужно поддерживать больше типов, и, если возможно, я бы хотел избежать решения instanceof
. Как я могу улучшить это?
В чем причина того, что метод 'create' принимает какие-либо аргументы? Реализация имеет то, что нужно для создания объекта - за исключением 'factoryField'. – user1491636
@ user1491636 Вы правы, эта информация должна поступать из экземпляра сейчас –
Вы обновленное решение - это то, о чем я думал ... не уверен, что это действительно фабрика, хотя :) – user1491636