Uhmmmm....ncs (non ci siamo), mi sa' che c'hai un po' di confusione in testa, oppure, me l'hai fatta venire a me...heheheh
Messo così, senza l'uso della Factory pare che tu non abbia ben compreso polimorfismo ed ereditarietà.
Con la factory, invece, mi sembra che tu ne stia facendo un uso improprio e, per altro, solo parzialmente corretto.
Alla fine, infatti, quando i nodi vengono al pettine ti sei giustamente chiesto: "cosa ci dovrei mettere nel metodoCambiaX?".
La risposta è che non ci puoi mettere nulla perchè, ad esempio, metodoCambiaA1 dell'oggetto A2 (pur essendo una sottoclasse di A) non sa' (e NON DEVE sapere!) dell'esistenza delle classi A1 e A2. Quindi: Come fai ad istanziarle?
Se vuoi cambiare il "comportamento" dell'oggetto non ha molto senso creare un oggetto con un tipo per poi cambiarlo subito dopo. Avrebbe più senso affidarsi al polimorfismo ed utilizzare uno strategy pattern che penso sia ciò che serve a te. Cioè un oggetto strategy che "ritorni" al client una variabile polimorfica. Una variabile che, in base a certe scelte, possa comportarsi come un oggetto di una una qualunque delle classi A1, A2, ecc. sottoclassi della classe A.
Non sarebbe male cmq se postassi il motivo concreto che ti ha spinto a trovare una soluzione di questo tipo, cioè cosa devi ottenere in realtà.
|