2010-07-20 11 views
27

Eventuali duplicati:
What C++ idioms should C++ programmers use?modelli di progettazione famosi che un C++ programmatore dovrebbe sapere

Dopo la lettura di libri come C++ Primer, Effective C++ e TC++ PL voglio imparare alcuni importanti modelli di progettazione.

Quindi, quali sono i famosi schemi di progettazione che ogni programmatore C++ dovrebbe conoscere?

+6

Perché qualcuno ha votato "Non è una domanda reale"? x- ( –

+2

Un sacco di appassionati di programmazione hanno già posto la stessa domanda –

+2

La mia domanda è specifica per C++, non solo per i modelli di progettazione ....Penso che non abbiano letto '... che un programmatore C++ dovrebbe sapere ' –

risposta

17

La risposta ovvia sono i modelli di Gang-Of-Four del famoso libro. Questi sono gli stessi modelli che vengono elencati in tutto il luogo.

http://en.wikipedia.org/wiki/Design_Patterns

di là di questo, dare un'occhiata in giro sito web Martin Fowlers ...

http://martinfowler.com/

C'è un bel po 'in là - il "famoso" è probabilmente "l'iniezione di dipendenza" . Molti altri sono piuttosto specifici per il dominio, però.

"I livelli di mixin" possono essere interessanti per C++. Una classe template prende la propria base come parametro template, in modo che il template possa essere usato per aggiungere la stessa funzionalità a molte classi diverse, o come metodo di composizione in modo che varie funzionalità possano essere facilmente incluse/escluse per una libreria. A volte viene utilizzato anche il trucco di template curiosamente ricorrente (la base originale è la classe finale completamente composta) in modo che i vari livelli di mixin possano fare un certo grado di "riflessione", in modo che i metodi intermedi possano essere definiti in termini di composti completamente composti tipi di membri, ecc. Ovviamente può essere un po 'incline a dipendenze cicliche irrisolvibili, se non stai attento.

http://portal.acm.org/citation.cfm?id=505148

7

Suggerisco di leggere Head First Design Patterns. È una lettura divertente e imparerai molti dei modelli di progettazione più comuni.

+1

Immagino che il libro di modelli di progettazione Java? –

+1

@kami: Sì, gli esempi di codice sono in Java, ma i pattern si applicano a tutte le lingue OO. –

7

In nessun ordine particolare, la Banda dei Quattro modelli vedo & uso più sono probabilmente la seguente:

  • Composite
  • Template Method
  • Abstract Factory
  • Singleton (molto odiato, ma ovunque)
  • visitatori
  • Builder
  • Proxy
20

C++ - quelle specifiche: RAII e Pimpl.

+0

Difficile dire quale di questi è più importante. PIMPL non si abitua abbastanza, forse a causa dei timori di sovraccarico indiretto di chiamata e forzando efficacemente l'oggetto sull'heap piuttosto che sullo stack. – Steve314

5

Il modello di pensiero. È un proiettile d'argento.

+0

Pensavo che "proiettili d'argento" fossero le soluzioni magiche in cui non devi pensare. Non molti di quelli in sviluppo. – Steve314

Problemi correlati