Alternative all'ereditarietà per componenti con comportamenti diversi?

0

Ho imparato molta ereditarietà in C #. Ma mi chiedo se ci sono altri modi che possono essere più puliti per le configurazioni basate sui componenti.

Ho oggetti che sono tutti praticamente uguali ma hanno un comportamento unico legato a loro, che al momento sostituisco solo un metodo virtuale.

Quindi ogni nuovo componente sto creando una nuova classe che eredita la classe base Component.

Ci sono modi più semplici per farlo in C # piuttosto che avere 15 script di una classe di ogni componente e il loro comportamento univoco?

Pseudo esempio dell'ereditarietà che ho:

Base Class - Component
WaterPump : Component
   //unique behaviour moves water around a system
PowerGenerator : Component
   //unique behaviour creates power units and adds to the system
enter code here
WaterGenerator : Component
   //unique behaviour creates water units and adds to the system

....the list goes on

Hanno altri comportamenti unici che vanno oltre la semplice aggiunta / creazione, ma volevano solo spiegare la situazione. Ho un sacco di classi per ogni singolo tipo che richiede un comportamento unico.

Sta iniziando a diventare un po 'sciocco - ma non so come collegare un comportamento a un componente, quindi non sto creando un nuovo componente derivato ogni volta. C'è qualche impostazione di progettazione che posso fare per migliorare questo?

    
posta WDUK 22.05.2018 - 00:55
fonte

1 risposta

2

Un modo è passare un'istanza di un oggetto al costruttore della classe del componente. Questa istanza contiene i dati e il comportamento che possono variare, mentre la classe del componente contiene ciò che è comune.

Le tue istanze possono essere classi con una classe / interfaccia di base comune, o delegati, anche lambda.

    
risposta data 22.05.2018 - 02:28
fonte

Leggi altre domande sui tag