Prima di tutto grazi Alex,

Mi chiedevo se esiste un design pattern per risolvere il seguente problema:
Supponiamo di avere delle API per la gestione dei file su un file system. Ad esempio

Ci sono N produttori di queste API quindi, per semplicità ne considero solo 2

class GestioneFileProd1{
inserisciProd1( f file); //inserisce un file da qualche parte
deleteProd1(f file) //cancella il file
}

class GestioneFileProd2{
inserisciProd2( f file);
deleteProd2(f file)
}

Dal main attualmente per usare le API di questo produttore si scrive

main{


GestioneFileProd1 getore = new GestioneFileprod1();
gestore.inserisciFile(file);
}

}


se voglio passare ad un altro produttore letterlemente si cancella il
codice precedente. cioè GestioneFileProd1(f File) con GestioneFileProd2(f File)

Quello che io vorrrei realizzare è:
a)Passare da un set di API ad un altro agevolmente senza buttare via del codice, in pratica inserisciFile
della classe main non deve essere brutalmente sovrascritto
b) Avere la possibilità di usare più API allo stesso tempo. ad esempio per i file di dimensione maggiore
di 100M se ne occupa le API del produttore 1, per quelli inferiori si 100 MB se ne occupa le API del produttore 2