Terwijl ik programmeer luister ik vaak naar muziek. En als je een tijdje doorcode dan hoor je vaak hetzelfde nummer en dan druk je na een tijdje vanzelf op next. Toen kwam ik op het idee van gewogen muzieklijsten. Muziek uit lijst 1 moet vaker in de random lijst voor komen als in muziek in lijst 2 (alleen voor het voorbeeld
)
Nu kun je in winamp veel doen met plugins, maar niet je eigen random functie implementeren.. Daar moet toch een oplossing voor zijn:
En ik bedacht het volgende:
Een mp3player hoeft alleen maar te weten wat de huidige song is die hij afspeeld, en hij moet weten waar hij de naam van de volgende song vandaan kan halen. Al snel kwam ik op het volgende model:
class mp3player has a MusicProvider
interface MusicProvider
class Random is a MusicProvider
In dit voorbeeld is Random een implementatie van de MusicProvider interface die de songs in een map in random volgorde aanreikt aan de mp3player via de (briljante
) methode:
getNextSong():returns URL
Wil ik nu een keer alle liedjes horen gesorteerd op naam dan schrijf ik daar gewoon een nieuwe MusicProvider voor. Erg simpel erg basic...
En dan nu het probleem:
Ik wil dat de musicProviders via plugins toegevoegd kun worden, dat de applicatie ze dynamisch kan laden en kan koppelen aan de mp3player.
(via een menu-tje kun je de plugin selecteren)
nu loop ik daar tegen een aantal problemen op:
-> hoe zorg ik dat de JVM de plugins kan vinden, oftewel hoe zet ik de plugins in het classpath
-> ik kan me voorstellen dan bepaalde plugins instellingen hebben, hoe verwerk ik die in de interface van de hoofapplicatie, Ik kan een methode maken die een compleet Panel teruggeeft maar is dit wenselijk?
er zijn vast nog wel meer problemen maar daar kom ik even niet op...
Nu kun je in winamp veel doen met plugins, maar niet je eigen random functie implementeren.. Daar moet toch een oplossing voor zijn:
En ik bedacht het volgende:
Een mp3player hoeft alleen maar te weten wat de huidige song is die hij afspeeld, en hij moet weten waar hij de naam van de volgende song vandaan kan halen. Al snel kwam ik op het volgende model:
class mp3player has a MusicProvider
interface MusicProvider
class Random is a MusicProvider
In dit voorbeeld is Random een implementatie van de MusicProvider interface die de songs in een map in random volgorde aanreikt aan de mp3player via de (briljante
getNextSong():returns URL
Wil ik nu een keer alle liedjes horen gesorteerd op naam dan schrijf ik daar gewoon een nieuwe MusicProvider voor. Erg simpel erg basic...
En dan nu het probleem:
Ik wil dat de musicProviders via plugins toegevoegd kun worden, dat de applicatie ze dynamisch kan laden en kan koppelen aan de mp3player.
(via een menu-tje kun je de plugin selecteren)
nu loop ik daar tegen een aantal problemen op:
-> hoe zorg ik dat de JVM de plugins kan vinden, oftewel hoe zet ik de plugins in het classpath
-> ik kan me voorstellen dan bepaalde plugins instellingen hebben, hoe verwerk ik die in de interface van de hoofapplicatie, Ik kan een methode maken die een compleet Panel teruggeeft maar is dit wenselijk?
er zijn vast nog wel meer problemen maar daar kom ik even niet op...