Quale modello di design pensi sia il più popolare?
Quale modello di design pensi sia il più popolare?
Risposte:
Sono abbastanza sicuro che il più comune sia "The Big Ball of Mud". Sfortunatamente per tutti noi.
http://en.wikipedia.org/wiki/Big_ball_of_mud
MVC e le sue varianti sono sicuramente uno dei migliori modelli di design.
Se stai parlando di modelli di design Gang-of-Four , dovrei dire Singleton . Questo è uno stato di cose davvero triste - quasi come se i programmatori sentissero parlare della magia dei modelli di progettazione e poi semplicemente si fermassero dopo il primo.
Se stai parlando di modelli in stile architettonico (in altre parole, modelli di progettazione che si estendono su più classi o livelli), dovrei dire MVC . Alcuni altri popolari sono il modello di repository e il localizzatore di servizi .
Osservatore
Se hai mai usato un evento. Hai usato Observer.
Decoratore
Aggiungi funzionalità a un oggetto in fase di runtime attraverso la composizione. Il mio preferito personale.
Modifica: anche Factory è probabilmente uno dei più comuni.
Facciata
Pensa a qualsiasi interfaccia REST come Twitter o le API SO. Sta nascondendo un mucchio di cose sul back-end che, almeno nel caso di Twitter, possono essere orribilmente complesse.
Mi interessa quali sono i tweet di db tables @ apklusk memorizzati? E che ha una cache veloce? E che @shemnon ha lettori così bassi che i tweet sono sempre senza memoria? Questa è la magia della facciata.
Modello di strategia
Se hai mai usato l'iniezione di dipendenza, hai usato il modello di strategia.
Perché nessuno ha ancora menzionato l' iteratore ? Soprattutto con tutte le mappe che compongono strutture dati complesse ... è quella che utilizzo di più. O stiamo parlando di schemi che ri-implementiamo?
Insieme alla mia risposta precedente, ne aggiungerò una nuova che ho incontrato oggi dalla mia bestia di un progetto ereditato:
Copia incolla
Durante il debug mi sono imbattuto in un pezzo di codice che chiamava 2 funzioni simili:
if(x)
Func1
else
Func2
Func1 e Func2 avevano gli stessi parametri. Li ho estratti e diffusi, e sono uguali al 100% tranne che per Func1 chiama Func3 e Func2 chiama Func4. Ho estratto quelli e li ho diffusi. Lo stesso al 100%, tranne 1 riga. Quindi un programmatore precedente ha deciso di copiare e incollare due funzioni nidificate a 50 righe, invece di aggiungere un parametro flag, a 2 funzioni private utilizzate esattamente in 1 posizione. Mi fa venire voglia di piangere.
Parlando di modelli di design Gang-of-Four, non riesco a pensare a un programma che non utilizza il modello Observer. Inoltre, come menzionato da Jaco, anche Singleton è molto usato, purtroppo è diventato un martello (qualsiasi programmatore lo usa anche se non è completamente necessario).
$_SESSION
variabile PHP .
Interprete
Raramente implementato, spesso usato. Selettori XPATH, XSLT, Regex, jQuery, ecc.
Sono sorpreso che nessuno abbia ancora detto "Costruttore". O "Adattatore". Probabilmente non sono così esotici come alcuni degli altri citati, ma li uso sempre. Factory e Abstract Factory sono anche molto comuni (ma sono già stati presi).
Non penso che sia elencato nel GoF, ma ne uso varianti ogni volta.
A livello di progettazione del software, direi che Composito, Strategia e Template (e, in misura minore, Factory) sono i più utilizzati. Nell'ultimo decennio abbiamo visto una preferenza per la composizione rispetto all'eredità quando abbiamo costruito i nostri sistemi usando un design OO. Di conseguenza, la combinazione dei modelli appena menzionati gioca un ruolo molto più importante di tutti gli altri IMO.
Dal punto di vista architettonico, discuterei di MVC sull'azienda e di modelli basati su macchine a stati sul lato incorporato delle cose.