Sto lavorando su un progetto Java e vorrei aggiungere un sistema plug-in. Più precisamente, vorrei consentire all'utente di progettare il proprio modulo, inserirlo in un barattolo, lasciarlo in una sottocartella "plugins /" della mia applicazione e utilizzarlo. Sono riuscito ad ottenere un classloader figlio per istanziare oggetti di classi situate in giare esterne, ma ora mi trovo di fronte a un dilemma del design:
Dire Joe crea un plug-in e lo carica in joeplugin.jar. Mi piacerebbe molto che Joe avesse una classe chiamata "instantiation.Factory" e vorrei anche che tutti avessero questa classe con questa esatta posizione e nome. (Questa classe factory implementa ovviamente un'interfaccia che fornisco e attraverso di essa ottengo quello che voglio dal plug-in.) Se Joe non fosse limitato in questo modo, dovrei esaminare il suo intero jar per una classe che implementa la mia interfaccia di fabbrica e non voglio immaginare quanto siano complicate le cose.
Quindi la mia domanda è: dovrei applicare una convenzione di denominazione rigida per questa singola classe? Non ho idea di come funzionano i sistemi plug-in.