Ho un'applicazione in cui ho un set di funzionalità di base.
-
L'applicazione stessa deve funzionare in modalità solo core.
-
Vorrei anche rendere l'applicazione estendibile in modo tale che, quando alcuni file jar / plugin esistono nel percorso classpath / installazione, sarebbero disponibili funzionalità aggiuntive, le cose sarebbero semplicemente lì. Questo è FACOLTATIVO.
Il modo in cui lo farei è usare lo schema di fabbrica con una modifica. Nel pacchetto principale, ho un punto di estensione (implementato da una variabile statica pubblica o un singleton o un altro modello di punto di estensione dal mio framework - Eclipse RCP). I jar / plug-in dell'estensione ottengono questo punto di estensione e registrano l'oggetto factory su questo punto di estensione. (Questo è il modo migliore con il meccanismo di attivazione di plug-in / funzionalità RCP, oppure può essere qualsiasi cosa che causi un carico della classe di estensione jar / plug-in di fabbrica)
Quando l'applicazione è in esecuzione, il core factory produrrebbe oggetti dal factory di estensione se uno è stato registrato o altrimenti usa la sua core factory. Ecco come l'applicazione passa dalla modalità principale alla modalità estensione se esiste un jar estensione.
Mi chiedo se questo è un modo decente di fare ciò che volevo fare o questo è solo un hack, anti-pattern, ecc ... Per favore, proponi una soluzione migliore se puoi. Grazie.