Le classi private nidificate sono considerate composizioni?

2

Sfondo

Sto considerando un progetto che include una classe API pubblica contenente molte classi private nidificate. Lo sto facendo per i seguenti motivi:

  1. Perché il nesting privato? Non avranno alcuna utilità per altre classi tranne che per la mia classe API pubblica.
  2. Perché le classi in primo luogo? Gli oggetti rappresentati hanno una notevole quantità di funzionalità che devono essere le loro classi.
  3. Perché molte classi? La funzionalità di ciascuna delle classi nidificate è troppo diversa l'una dall'altra per essere derivata da un singolo tipo di classe.

Domanda

Con tutto ciò che viene affermato sopra, questa pratica progettuale dovrebbe essere considerata "composizione" nel senso più stretto della parola?

Direi di sì, perché rappresento un sistema "part-of", in cui le classi private sono parte della classe API pubblica e non esisteranno mai al di fuori della durata della classe API. Detto questo, per qualche ragione penso che potrebbe esserci qualcosa di sbagliato qui. Voglio solo essere sicuro.

    
posta Snoop 16.03.2016 - 15:43
fonte

1 risposta

2

No.

Le classi nidificate forniscono un solo vantaggio sull'ereditarietà: non usano l'ereditarietà. Gli altri vantaggi della composizione, ovvero comportamento polimorfico e riutilizzo del codice, sono assenti nelle classi annidate (a meno che tu non abbia una classe principale particolarmente ampia, che considererei una violazione di SRP).

Questo non significa che non dovresti usarli. Significa semplicemente che non soddisfano lo spirito compositivo.

    
risposta data 16.03.2016 - 15:59
fonte

Leggi altre domande sui tag