Salve,
vedendo un semplice esempio di Factory Method mi è sorto un dubbio su una particolarità implementativa, ovvero la necessità dell'upcasting, nella classe creazione concreta dell'oggetto concreto nella sua super-classe astratta...mi spiego meglio con un esempio:
AbstractObject :
Codice PHP:
public interface AbstractObject {
public void aMethod();
}
ConcreteObject1 :
Codice PHP:
public class ConcreteObject1 implements AbstractObject {
public void aMethod() {
System.out.println("aMethod di ConcreteObject");
}
}
Creator :
Codice PHP:
public abstract class Creator {
abstract AbstractObject createObject();
void doSomething() {
AbstractObject ao = createObject();
ao.aMethod();
}
}
Creator1 :
Codice PHP:
public class Creator1 extends Creator {
@Override
AbstractObject createObject() {
return (AbstractObject) new ConcreteObject1();
}
}
Test :
Codice PHP:
public class Test {
public static void main(String[] args) {
Creator c = new Creator1();
c.doSomething();
}
}
L'upcasting in Creator1 è proprio necessario? A me sembra funzioni tutto anche se lo levo...
Grazie dell'attenzione,
Matteo