Separazione della logica comune in un'interfaccia

-1

Per raggiungere il principio DRY voglio una funzionalità che registri il tempo di elaborazione di alcune altre funzionalità, ad esempio per ciascun gruppo di classi con una classe Base .

Quindi il modo più logico è posizionarlo in una classe abstract e creare un metodo virtual tra StopWatch Start e Stop . Ma stavo pensando se posso separare questa funzionalità in un'interfaccia.

La mia classe Base implementerebbe quindi IProcessingTimeCalculator . È possibile o sto pensando troppo?

    
posta Ozkan 07.09.2018 - 10:21
fonte

1 risposta

2

Le interfacce sono solo dichiarazioni e non possono contenere l'implementazione. Pertanto, un'interfaccia non può fornire alcuna funzionalità come può fare una classe base.

Altre lingue hanno tratti e mixin che sono come un'interfaccia o una classe base astratta, tranne che consentono un tipo di ereditarietà multipla. C # non ha quelli.

Se è necessario combinare funzionalità aggiuntive, è consigliabile utilizzare composizione, non ereditarietà . Puoi dare alle tue classi un ProcessingTimeCalculator o StopWatch oggetto e quindi chiamare i metodi di quell'oggetto.

    
risposta data 07.09.2018 - 13:45
fonte

Leggi altre domande sui tag