Ciao,
mi sto accingendo a scrivere un’estensione per ruby (ripod) che
implementi
i binding per la libreria libgpod e mi trovo davanti ad una scelta di
design sulla quale vorrei un consiglio.
La libreria consente di accedere al database iTunesDB, leggerlo,
modificarlo, aggiungere canzoni, miniature, playlist (consente anche di
accedere al database delle foto, ma di quello mi occuperò in seguito).
Per aggiungere una canzone, ad esempio, è comunque sià necessario aprire
il database dell’ipod, atto attraverso il quale si ottiene una struttura
dati itdb_iTunesDB, e passare tale struttura come argomento della
funzione
che si occupa di fare la magia.
Per questo motivo, ho pensato di realizzare una classe Ripod dove si
trovano i metodi per aggiungere/rimuovere/modificare canzoni, miniature
e
playlist, e poi delle sottoclassi Ripod::Track, Ripod::Playlist e
Ripod::ArtWork che si occupino di contenere i dati relativi. Un qualcosa
del tipo:
Ripod#track_add(Ripod::Track track)
#track_remove
…
Ripod#artwork_add(Ripod::ArtWork artwork)
#artwork_remove
…
Ripod#playlist_add(Ripod::Playlist playlist)
#playlist_remove
ecc…
Il problema è che non sono convinto che questa sia la migliore scelta,
pertanto volevo sentire anche il vostro parere.
Ciao,
Nico