Sto cercando di individuare il modello di progettazione corretto per lo scenario seguente.
Sto cercando di creare un oggetto / binario con moduli diversi, un modulo è una funzionalità che voglio fornire a quell'oggetto. Gli esempi di un modulo sono come leggere un file, scrivere un file, inviare alcune richieste al server, ecc ...
Diciamo che ho le seguenti funzioni
func readFiles(path) {
/* */
}
func writeFiles(Content, Path) {
/* */
}
func playMusic(path) {
/* */
}
func playVideo(path) {
/* */
}
Il programma oggetto / client di solito avrà la seguente funzionalità prendendo input dall'utente
switch input {
case "playmusic":
call playmusic('path')
case "playvideo":
call playvideo('path')
case "readfile":
call readfile('path')
case "writefile":
call writefile('path')
default:
/* Cannot understand your input */
}
L'approccio sopra funziona bene se voglio includere tutte le funzioni nell'oggetto e genererò un file binario che contiene tutte le funzioni.
Ma per ora, voglio fornire una maggiore granularità durante la generazione del file binario. Voglio che l'utente sia in grado di scegliere la funzione che desidera includere nel binario e quindi le funzioni non utilizzate non saranno incluse nel file binario. Quale modello di design sarà adatto a questo?
Ho pensato al motivo del decoratore, ma non è esattamente giusto dal momento che non sto decorando una funzione, sono tutte funzioni separate.
Ho controllato lo schema della strategia, ma non è esattamente corretto visto che includerà comunque tutte le funzioni ma semplicemente modificando la strategia in fase di runtime.