la classe base può contenere metodi protetti che non devono essere usati da tutte le classi discendenti?
Ho questa situazione:
- EntityA: ha alcuni metodi che gestiscono le attività
- EntitàB: ha alcuni metodi che gestiscono i prodotti
- EntityC: ha metodi che gestiscono sia le attività che i prodotti
Uso C #, quindi l'ereditarietà multipla non è possibile.
Va bene avere una classe base con metodi protetti che gestiscono sia le attività che i prodotti e che tutte e 3 le classi ereditino da questa classe base?
Modifica : non ho mai capito cosa guadagniamo usando invece la composizione, come implementare tale approccio in uno scenario più complesso. Lascia che ti dia una situazione un po 'più espansa:
- EntityA: deve utilizzare internamente il metodo FilterActivitiesByType () e ha metodi pubbliciA1 (), A2 (), A3 ()
- EntitàB: deve utilizzare internamente il metodo FilterProductsByType () e ha metodi pubblici B1 (), B2 (), B3 ()
- EntityC: deve utilizzare internamente sia FilterActivitiesByType () che FilterProductsByType (), e ha metodi pubbliciC1 (), C2 (), C3 ()
Quindi, sia FilterActivitiesByType che FilterProductsByType non devono essere esposti attraverso l'interfaccia. Questi metodi possono in molti casi essere anche statici. Ora posso mettere questi due metodi rispettivamente nelle classi IFilterActivityHelper e IFilterProductHelper e utilizzare DI nel costruttore per renderlo disponibile alle classi EntityA, EntityB ed EntityC. Questo è, credo a ciò che tutti consigliate per composizione.
Ora immagina di avere diversi metodi di supporto alle attività e diversi metodi di supporto dei prodotti. Potrei inserirli in ciascuna classe di helper specifica (1a), oppure potrei inserire tutti i metodi helper di attività in una classe ActivityHelper (2a). (1 °) Significa che avrò un sacco di istanze da iniettare nel costruttore, per ogni metodo di aiuto separato. (2 °) Ci dà lo stesso situtation della mia domanda originale con ereditarietà, poiché ora IActivityHelper è stato inserito in ActivityA e ActivityA deve utilizzare solo 2 metodi su 5 che espone.
Quindi qualcuno può elaborare come eseguire correttamente la composizione in questi casi?