Immagina di avere una classe astratta Node
che ha diversi metodi e attributi. (Entra in una rete, invia un messaggio, trasmetti ...).
Voglio poter aggiungere / rimuovere funzionalità a / da quella classe Node
(Funzionalità di routing, funzionalità di mining, ...)
Stavo pensando di utilizzare un pattern Decorator, dal momento che cambiamo il comportamento di quella classe dinamicamente in runtime.
return new RoutingNode(new BaseNode(name));
Ma ora, sto iniziando a pensare che questa non sia la scelta giusta poiché sto usando una classe base astratta su un'interfaccia.
Fondamentalmente voglio sapere se è possibile aggiungere funzionalità a un oggetto esistente senza sottoclasse della classe base. Ad esempio, desidero aggiungere la funzionalità di routing per consentire a un nodo di sapere che è in grado di instradare le richieste in arrivo o la funzionalità di data mining per consentire al nodo di eseguire attività di mining. Ma questo dovrebbe essere interoperabile nel senso che posso aggiungere o rimuovere funzionalità in fase di runtime.
Quale sarebbe il modo più elegante e migliore per gestire il mio caso di utilizzo.