Ho una TriggerCaller
e una TriggerAction
class. Il chiamante "chiama" il metodo do()
sull'azione, che viene impostato con il metodo TriggerCaller
s setAction()
. Il resto del programma dovrebbe occuparsi della classe Trigger
, che contiene il chiamante e l'azione.
Ho due opzioni:
1) Assegna alla classe Trigger
i metodi setAction
e setCaller
. Questo sembra avere senso perché significa che non dovrò ridefinire le cose per ogni sottoclasse (vedi opzione 2) e non favorirò un oggetto rispetto all'altro (vedi opzione 3).
2) Posso definire Trigger
sottoclassi per ogni combinazione di Chiamata-Azione. Questo sembra "sentirsi" meglio per qualche ragione che non riesco ad articolare, ma è poco pratico. Ci sono semplicemente troppe combinazioni di TriggerCaller e TriggerActions da fare.
3) Definisci una sottoclasse Trigger
per ogni TriggerCaller
, ad esempio TriggerMIDI
per MIDICaller
e assegna a quella classe un setAction()
. Questo sembra avere senso da una prospettiva GUI, perché nell'interfaccia le persone selezionano il tipo TriggerCaller
da un menu "Crea" e poi lo configura con un'azione in una finestra di dialogo (insieme ad altre cose).
Sento che (1) ha più senso, ma in qualche modo sembra solo ... sbagliato. Penso di esporre troppo del funzionamento interno delle classi. Sto anche ponendo l'onere sul codice GUI di impostare la classe (sorta di). C'è una soluzione migliore? Quale dovrei scegliere?