Sfondo: Sto costruendo un'app desktop in cui la capacità dell'utente di sviluppare mod è fondamentale. Alle sue ossa è un generatore di contenuti in cui il contenuto ha molti livelli e gli utenti possono sviluppare il proprio codice per inserire / generare contenuti a qualsiasi livello. Tutti questi moduli sviluppati dall'utente sarebbero disponibili per l'utente sulla GUI principale oltre ai moduli preconfezionati, in cui possono selezionare i moduli che verranno utilizzati e configurare opzioni generiche e specifiche del modulo prima di iniziare il processo di generazione. Le ragioni di questo design includono l'integrazione di moduli di più persone in un risultato finale, oltre alla parallelizzazione, l'I / O su file e tutte le altre difficili sfide gestite dall'app in modo che lo sviluppatore possa solo preoccuparsi della generazione di contenuti. / p>
Questo porta al problema dell'approccio di base da adottare quando si determina come consentire loro di integrare i propri moduli. Devo loro produrre librerie compilate con determinate interfacce e leggerle in fase di runtime? Dal momento che questo è probabile che sia pubblicamente su github, posso semplicemente consentire loro di estendere le classi di base e compilare l'intera cosa da soli? La moddability è meglio servita dall'estensione delle classi o dalla comunicazione tra oggetti?
Per quanto posso dire, devo usare Java, se questo influenza le scelte progettuali che prendo. L'app deve essere eseguibile su win / mac / linux e vanificherebbe lo scopo se le persone che hanno sviluppato mods potevano solo condividerle con persone del proprio sistema operativo. Anche se potrei ricorrere allo scripting per le mod e semplicemente compilare l'app principale per tutti i diversi SO, non sono sicuro che sia la scelta giusta per questo progetto. Forse anche questo fa parte di questa domanda.