Domanda

Sono in un processo di apprendimento moderno C ++ e concentrandosi sulla fabbrica astratta al momento, e da quello che capisco, una delle idee principali per Loki è quella di evitare "virtual" (polimorfismo dinamico) che viene utilizzato in GOF.Ma a volte, è ancora usato.In un capitolo sulla fabbrica astratta, AbstractoryFactoryUnit ha "virtuale". http:// loki-lib.cvs.sourceforge.net / Loki-Lib / Loki / include / loki / abstractfactory.h? View= markup da quello che ho letto finora, ci sono modi per aggirarlo. http://en.wikipedia.org/wiki/template_metaprogramming#static_polimorfism

Perché è più efficace usare virtuale in questo caso?

È stato utile?

Soluzione

Dal momento che gli obiettivi di Loki sembrano principalmente educativi, direi che il polimorfismo statico avrebbe potuto essere evitato solo per il bene di chiarezza. Quando insegni un modello di progettazione come la fabbrica astratta, le relazioni tra le classi sono l'aspetto più importante. Come viene implementato il polimorfismo sembra un problema secondario, relativo all'attuazione in questo contesto.

True, il polimorfismo statico potrebbe essere più efficiente, ma diminuisce la leggibilità del codice.

Potresti discutere che se dovessi creare spesso oggetti grandi, beneficerai di usare il polimorfismo statico. E questo è molto vero, ma penso che Loki non sia destinato a essere usato in un tale scenario. Il suo scopo principale è l'insegnamento.

Dai un'occhiata al codice sorgente di Boost.Factory , potrebbe aiutare. In effetti, preferirei studiare moderno C ++ dal codice sorgente boost; Vero, si dice che Loki abbia posato le fondamenta per Boost, ma tieni presente che Boost ha acquisito molto più utile e quindi rivisto e criticato di più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top