se nella classe io faccio NodePosition<E> n = (NodePosition<E>) getPositionOf..();
non sto facendo due cast inutili?
cioe', l'oggetto non diventa prima da NodePosition -> Position -> NodePosition ?
inoltre, se supponendo, restituisca il Nodo di una Position differente, magari una cosa del genere?
con TreePosition che implementa Position;
dovrei fare una cosa del genere ogni volta:
Codice: Seleziona tutto
try{
NodePosition<E> n = getPositionOf...();
}
catch(ClassCastException e){
try{
TreePosition<E> n = getPositionOf...();
}
catch(ClassCastException e)
}
con il tipo di ritorno sarebbero i metodi diversi a scegliere la struttura da restituire (Un po come con argomenti diversi eseguo metodi diversi), allo stesso modo, potrei utilizzare una combinazione di strutture, e muovermi su queste con una Position, Ogni elemento potrebbe poi organizzare le stesse strutture in vari modi (Alberi, Liste, Ecc...), e modificare la struttura in base a come intendo muovermi.
Codice: Seleziona tutto
class PolymorphicStructure ... {
NodePosition<E> getPositionOf...(){
... la struttura ora e una lista concatenata ...
}
TreePosition<E> getPositionOf...(){
... la struttura ora e' un albero ...
}
}
ovviamente non voglio veramente realizzare una struttura polimorfica...
ma mi vengono in mente un paio di casi in cui questa policy si potrebbe applicare.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)