it-swarm.it

Qual è il modello di progettazione più utilizzato?

Quale modello di design pensi sia il più popolare?

24
Tamara Wijsman

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

39
Jay

MVC e le sue variazioni sono sicuramente uno dei migliori modelli di design.

25
ysolik

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 repository pattern e service-locator.

21
Jaco Pretorius

Observer

Se hai mai usato un evento. Hai usato Observer.

16
Steven Evers

Decorator

Aggiungi funzionalità a un oggetto in fase di runtime attraverso la composizione. Il mio preferito personale.

Modifica: Anche Factory è probabilmente uno dei più comuni.

7
JD Isaacks

Perché nessuno ha ancora menzionato iteratore? Soprattutto con tutte le mappe che compongono strutture dati complesse ... è quella che utilizzo di più. O stiamo parlando di schemi che ri-implementiamo?

5
ToTheBeach

Modello di strategia

Se hai mai usato l'iniezione di dipendenza, hai usato il modello di strategia.

5
richeym

Facade

Pensa a qualsiasi REST interfaccia come Twitter o SO API. Sta nascondendo un mucchio di cose di 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.

5
shemnon

Sono sorpreso che nessuno abbia menzionato il modello Factory, nella mia esperienza che è uno dei modelli più utilizzati (e anche più abusati) là fuori. Se non fosse il primo, probabilmente il singleton dovrebbe essere il primo, avrei pensato che sarebbe stato un secondo vicino.

3
AlexC

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.

3
Jay

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, sfortunatamente è diventato un martello (qualsiasi programmatore lo usa anche se non è completamente necessario).

2
Cristian

Interprete

Raramente implementato, spesso usato. Selettori XPATH, XSLT, Regex, jQuery, ecc.

2
Jesse Millikan

Specification

Non penso che sia elencato nel GoF, ma ne uso varianti ogni volta.

1
John Kraft

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).

1
Tim Claason

Il modello di progettazione più frequentemente utilizzato è, ovviamente, Spaghetti .

1
SK-logic

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 citati gioca un ruolo molto più importante rispetto a 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.

0
luis.espinal