Mi piacerebbe progettare un framework di plugin, ma non sono stato in grado di trovare un design orientato agli oggetti che si adatta ai miei obiettivi.
Il mio obiettivo di progettazione più ampio è per me consentire agli utenti di definire le classi in una directory. Quindi, il programma caricherà le classi in fase di esecuzione. Le classi condividono un'interfaccia comune in modo che il programma possa scorrere le classi e chiamare un metodo condiviso da ogni classe. Ad esempio:
modules.run
Chiamerebbe il metodo .run di tutti i moduli caricati dal framework. La ragione per cui questo approccio è interessante per me è che gli utenti sarebbero in grado di fornire le loro classi con un codice personalizzato, che potrebbe essere eseguito in massa in fase di esecuzione senza dover aggiungere istruzioni "include" e quant'altro per caricare la classe al momento dell'inizializzazione.
Tuttavia, per quanto ne so, questo disegno non si fonde facilmente con la progettazione orientata agli oggetti standard. Ad esempio, la maggior parte delle lingue non espone un modo per scorrere su ogni sottoclasse esistente di una classe e chiamare un metodo comune. Devo essere in modo errato concettualizzare come realizzerei questo.
L'esempio principale esistente di un tale framework che conosco è il framework metasploit.
Quale sarebbe la progettazione corretta per un progetto del genere? Sento che la differenza principale tra questo e il pattern di plug-in standard è che i plug-in devono essere caricati in fase di esecuzione e ripetuti per chiamare un comune metodo.