Quale design è migliore? [MainClass] - [Class] OR [Main Class] - [Middle Class] - [Class]

0

Ho due progetti che raggiungono lo stesso risultato.

-------Design A

MainClasshaunalistaeduemetodi.Imetodicreanounoggettoautonomoevengonoaggiuntiallalista.Laragioneperlasuperclasse,BeCsonosimilieaggiungeròaltresottoclassi.Inoltre,possosfruttareilpolimorfismoinseguito.

-------DesignB

mainclass ha due metodi. Il metodo crea un collegamento di aggregazione con MiddleClass e chiama direttamente i metodi di Mainclass - che restituisce un oggetto autonomo di classe b / c.

Improbabile A, B beneficia di un più alto grado di accoppiamento (libero) dalla MainClass, dove gli atti di MiddleClass gestiscono le informazioni dalla gerarchia di ereditarietà al mainclass - E, naturalmente, più sottoclassi aggiungo, il mainclass non avrà qualsiasi altro collegamento alla gerarchia, invece, è tutto gestito da middleclass.

Tuttavia, non sono sicuro se sto semplicemente sovrastimando il design o se è un design migliore. Cosa ne pensate voi sia il design migliore e perché?

    
posta benscabbia 24.12.2014 - 19:28
fonte

1 risposta

1

In entrambi i disegni, MainClass deve conoscere ClassB e ClassC (e qualsiasi futura classe derivata) per fornire i metodi per creare e aggiungere nuovi elementi di lista. Questo rende l'interfaccia attuale per gli utenti di MainClass il primo design è il design più semplice e il migliore dei due.

Tuttavia, è possibile creare un design migliore disaccoppiando MainClass e MiddleClass .
MainClass deve solo fornire un metodo per aggiungere (elementi già creati) all'elenco.
MiddleClass è in realtà una classe factory, come già notato nei commenti, e dovrebbe essere resa disponibile all'utente per creare gli elementi che dovrebbero essere aggiunti alla lista.

In questo modo, MainClass non ha bisogno di essere aggiornato se nuove classi vengono aggiunte alla gerarchia, ma solo MiddleClass .

    
risposta data 24.12.2014 - 20:19
fonte

Leggi altre domande sui tag