Domanda

Qual è la penetrazione dei design pattern nel mondo reale?Li usi nel tuo lavoro quotidiano, discutendo come e dove applicarli con i tuoi colleghi, o rimangono più un concetto accademico?

Forniscono effettivamente un valore reale al tuo lavoro?O sono solo qualcosa di cui la gente parla per sembrare intelligente?

Nota:Ai fini di questa domanda, ignorare modelli di progettazione "semplici" come Singleton.Sto parlando di progettare il tuo codice in modo che tu possa trarne vantaggio Controller vista modello, eccetera.

È stato utile?

Soluzione

Qualsiasi programma di grandi dimensioni e ben scritto utilizzerà modelli di progettazione, anche se non sono nominati o riconosciuti come tali.Ecco cosa sono i design pattern, disegni che si ripetono e naturalmente verificarsi.Se ti stai interfacciando con una brutta API, probabilmente ti ritroverai a implementare a Facade per ripulirlo.Se hai messaggi tra componenti che devi disaccoppiare, potresti ritrovarti a utilizzarli Observer.Se disponi di diversi algoritmi intercambiabili, potresti finire per utilizzare Strategy.

Vale la pena conoscere i modelli di progettazione perché è più probabile che li riconosca e converga quindi su una soluzione pulita più rapidamente.Tuttavia, anche se non li conosci affatto, prima o poi finirai per crearli (se sei un bravo programmatore).

E ovviamente, se stai usando un linguaggio moderno, probabilmente sarai costretto a usarli per alcune cose, perché sono integrati nelle librerie standard.

Altri suggerimenti

Secondo me la domanda:"Fai utilizzo design pattern?", da solo è un po' imperfetto perché la risposta è universalmente SÌ.

Lasciami spiegare, noi, programmatori e designer, utilizziamo tutti modelli di progettazione...semplicemente non sempre ce ne rendiamo conto.So che sembra un cliché, ma non segui gli schemi, sono gli schemi che vengono da te.Progetti cose, potrebbero sembrare un modello esistente, le chiami in quel modo in modo che tutti capiscano di cosa stai parlando e la logica dietro la tua decisione progettuale è più forte, sapendo che è stata discussa fino alla nausea Prima.

Personalmente utilizzo i pattern come strumento di comunicazione.Questo è tutto.Non sono soluzioni progettuali, non sono best practice, non sono strumenti in una cassetta degli attrezzi.

Non fraintendermi, se sei un principiante, i libri sui modelli ti mostreranno come risolvere al meglio una soluzione "utilizzando" i loro modelli piuttosto che un altro design difettoso.Probabilmente imparerai dall'esercizio.Tuttavia, devi capire che questo non significa che ogni situazione abbia bisogno di uno schema corrispondente per risolverla.Ogni situazione presenta qualche peculiarità qua e là che ti richiederà di pensare a delle alternative e di prendere una decisione difficile senza una risposta perfetta. Quello è progetto.

Gli anti-pattern, tuttavia, appartengono a una classe completamente diversa.Tu in realtà Volere A attivamente evitare anti-pattern.Ecco perché il nome anti-pattern è così controverso.

Per tornare alla tua domanda iniziale:
"Utilizzo design pattern?", Sì!
"Mi appoggio attivamente ai design pattern?", No.

SÌ.I design pattern possono essere meravigliosi se usati in modo appropriato.Come hai detto, ora sto utilizzando Model-View-Controller (MVC) per tutti i miei progetti web.È un modello molto comune nello spazio web che rende il codice lato server molto più pulito e ben organizzato.

Oltre a ciò, ecco alcuni altri modelli che potrebbero essere utili:

  • MVVM (Modello-Vista-VistaModello):un modello simile a MVC;utilizzato per le applicazioni WPF e Silverlight.

  • Composizione:Ottimo per quando è necessario utilizzare una gerarchia di oggetti.

  • Singleton:Più elegante dell'utilizzo dei globali per archiviare elementi che necessitano veramente di una singola istanza.Come hai detto, uno schema semplice ma ha i suoi usi.

Vale la pena notare che un design pattern può anche evidenziare una mancanza di caratteristiche linguistiche e/o carenze in una lingua.Ad esempio, gli iteratori sono ora integrati come parte dei linguaggi più recenti.

In generale i design pattern sono piuttosto utili ma non dovresti usarli ovunque;proprio dove sono adatti alle tue esigenze.

Ci provo, sì.Aiutano davvero la manutenibilità e la leggibilità del codice.Tuttavia, ci sono persone che ne abusano, di solito (da quello che ho visto) forzando un sistema a uno schema che non esiste.

Provo a utilizzare i modelli se sono applicabili.Penso che sia un po' triste vedere gli sviluppatori implementare modelli di progettazione nel codice solo per il gusto di farlo.Per il compito giusto, tuttavia, i modelli di progettazione possono essere molto utili e potenti.

Esistono molti modelli di progettazione oltre al semplice utilizzati nel "mondo reale".Un buon esempio Stackoverflow utilizza il modello Model View Controller.Ho utilizzato Class Factories più volte in progetti per il mio datore di lavoro e ho visto anche molti progetti già scritti utilizzarli.

Non sto dicendo che vengano utilizzati tutti i modelli di progettazione, ma molti lo fanno.

Sì, di solito accade quando iniziamo a progettare qualcosa e poi qualcuno nota che somiglia a un modello esistente.Quindi diamo un'occhiata ad esso e vediamo come ci aiuterebbe a raggiungere il nostro obiettivo.

Utilizziamo anche modelli non documentati ma che emergono da molte attività di progettazione.

Intendiamoci, non li usiamo molto.

Sì, Factory, Chain of Responsibility, Command, Proxy, Visitor e Observer, tra gli altri, sono utilizzati in una codebase con cui lavoro quotidianamente.Per quanto riguarda MVC, questo sito sembra usarlo abbastanza bene e gli sviluppatori non hanno potuto dire abbastanza cose positive nel ultimo podcast.

Sì, utilizzo molti modelli di progettazione ben noti, ma finisco anche per creare alcuni software che in seguito scopro utilizzano un modello di progettazione "con nome".I design più eleganti e riutilizzabili potrebbero essere definiti "modello".Assomiglia molto ai passi di danza.Conosciamo tutti il ​​valzer e il 2 passi, ma non tutti hanno un nome per il "bump and scoot", sebbene la maggior parte di noi lo faccia.

MVC è molto noto, quindi sì, utilizziamo parecchi modelli di progettazione.Ora, se mi stai chiedendo informazioni sui modelli Gang of Four, ce ne sono diversi che ne uso perché altri manutentori conosceranno il design e ciò su cui stiamo lavorando nel codice.Ce ne sono diversi, però, che rimangono abbastanza oscuri per ciò che facciamo, quindi se ne uso uno non ottengo tutti i vantaggi dell'utilizzo di un pattern.

Sono importanti, sì, perché ti offrono un metodo per parlare di progettazione del software in modo rapido, efficiente e generalmente accettato.Puoi realizzare soluzioni personalizzate migliori, beh sì (più o meno)?

I modelli GoF originali sono stati estratti dal codice di produzione, quindi hanno catalogato ciò che era già utilizzato in natura.Non sono puramente o soprattutto una cosa accademica.

Trovo che il pattern MVC sia davvero utile per isolare la logica del modello, che può essere riutilizzata o modificata senza troppi problemi.Aiuta anche a disaccoppiare le classi e semplifica i test unitari.Ne ho scritto recentemente (sì, spina spudorata qui...)

Inoltre, di recente ho utilizzato un pattern factory da una classe base per generare e restituire la classe DataContext corretta di cui avevo bisogno al volo, utilizzando LINQ.

I ponti vengono utilizzati quando si tenta di incollare insieme due tecnologie diverse (come Cacao e Rubino sul Mac, ad esempio)

Trovo, tuttavia, che ogni volta che implemento un modello, è perché lo sapevo in anticipo.Generalmente ci si pensa un po' di più perché trovo che devo modificare leggermente il modello originale per soddisfare le mie esigenze.

Devi solo stare attento a non diventare e astronauta dell'architettura!

Sì, i design pattern sono ampiamente utilizzati nel mondo reale e quotidianamente da molte delle persone con cui lavoro.

A mio avviso, il valore più grande fornito dai design pattern è che forniscono un linguaggio universale e di alto livello per trasmettere la progettazione del software ad altri programmatori.

Ad esempio, invece di descrivere la tua nuova classe come "un'utilità che crea una delle tante altre classi basate su una combinazione di criteri di input", puoi semplicemente dire che è un "fabbrica astratta" e tutti capiscono subito di cosa stai parlando.

Sì, i design pattern o i pattern astratti fanno parte della mia vita, dove guardo, comincio a vederli.Pertanto, sono circondato da loro.Ma, come sai, la scarsa conoscenza è una cosa pericolosa.Pertanto, ti consiglio vivamente di leggere il libro GoF.

Uno dei problemi principali relativi ai design pattern è che la maggior parte degli sviluppatori semplicemente non ne ha l'idea o non ci crede.E la maggior parte delle volte discutono su variabili, loop o interruttori.Ma sono fermamente convinto che se non parli il linguaggio dei pattern, il tuo software non andrà lontano e ti ritroverai in un incubo di manutenzione.

Come sai, anche l'anti-pattern è una cosa pericolosa e accade quando hai poca esperienza sui design pattern.E il refactoring degli anti-pattern è molto più difficile.Come libro consigliato su questo problema, leggi "AntiPatterns:Refactoring di software, architetture e progetti in crisi".

SÌ.

Li stiamo utilizzando anche nel mio lavoro attuale:Codifica mainframe con COBOL e PL/I.

Finora ho visto Adaptor, Visitor, Facade, Module, Observer e qualcosa di molto vicino a Composite e Iterator.A causa della natura delle lingue, vengono utilizzati principalmente modelli strutturali.Inoltre, non sono sempre sicuro che le persone che li usano lo facciano consapevolmente :D

Utilizzo assolutamente i design pattern.A questo punto do per scontato MVC come modello di progettazione.La ragione principale per cui li utilizzo è che sono abbastanza umile da sapere che probabilmente non sono la prima persona a incontrare un problema particolare.Raramente inizio un pezzo di codice sapendo quale modello utilizzerò;Osservo costantemente il codice per vedere se si sviluppa naturalmente in uno schema esistente.

Anche io sono molto affezionato Di Martin Fowler Modelli di architettura delle applicazioni aziendali.Quando si presenta un problema o un'attività, vado alla sezione correlata (è principalmente un libro di consultazione) e leggo alcune panoramiche dei modelli.Una volta che ho un'idea migliore del problema generale e delle soluzioni esistenti, comincio a vedere il percorso a lungo termine che probabilmente prenderà il mio codice attraverso l'esperienza degli altri.Finisco per prendere decisioni molto migliori.

I design pattern giocano sicuramente un ruolo importante in tutte le mie idee "per il futuro".

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