Quando utilizzare quale modello di disegno? [chiuso]


104

Mi piacciono molto i modelli di design, ma trovo difficile vedere quando posso applicarne uno. Ho letto molti siti Web in cui vengono spiegati i modelli di progettazione. Capisco la maggior parte di loro, ma trovo difficile riconoscere uno schema nelle mie situazioni.

Quindi, è per questo che pongo questa domanda. Esistono linee guida / campanelli d'allarme quando utilizzare quale modello di progettazione.

Ad esempio, se si esegue un'istruzione switch per determinare quale oggetto è necessario creare, è probabile che si desideri utilizzare il modello di progettazione di fabbrica. Quindi l'istruzione switch in questo caso è un "campanello d'allarme" per utilizzare il pattern Factory.

Quindi, conosci più "campanelli d'allarme" per determinare un modello di progettazione?


6
Di solito le descrizioni dei pattern che vedo includono una descrizione delle situazioni in cui vorresti creare quel pattern.
R. Martinho Fernandes

Risposte:


99

Di solito il processo è il contrario. Non cercare situazioni in cui utilizzare modelli di progettazione, cerca codice che possa essere ottimizzato. Quando hai un codice che pensi non sia strutturato correttamente. prova a trovare un modello di progettazione che risolva il problema.

I design pattern hanno lo scopo di aiutarti a risolvere problemi strutturali, non andare a progettare la tua applicazione solo per essere in grado di utilizzare i design pattern.


23
Non solo problemi strutturali, ma anche comportamentali e creazionali.
DevDemon

1
I modelli di progettazione possono accelerare il processo di sviluppo fornendo paradigmi di sviluppo testati e comprovati. Una progettazione software efficace richiede la considerazione di problemi che potrebbero non diventare visibili fino a una fase successiva dell'implementazione. Il riutilizzo dei modelli di progettazione aiuta a prevenire problemi impercettibili che possono causare problemi importanti e migliora la leggibilità del codice per programmatori e architetti che hanno familiarità con i modelli.
SaddamBinSyed il

5

Imparali e lentamente sarai in grado di riconciliarti e capire quando usarli. Inizia con qualcosa di semplice come il pattern singleton :)

se vuoi creare un'istanza di un oggetto e solo UNO. Usi il pattern singleton. Diciamo che stai creando un programma con un oggetto opzioni. Non ne vuoi molti, sarebbe sciocco. Singleton si assicura che non ce ne sarà mai più di uno. Il pattern singleton è semplice, usato molto e davvero efficace.


17
Il singleton non è realmente per quando hai bisogno di una sola istanza. Singleton è per quando è necessario limitare a un'istanza. Quando hai bisogno di una sola istanza, puoi provare semplicemente a creare una sola istanza e utilizzarla.
R. Martinho Fernandes

Inoltre, sebbene singleton sia molto utile e necessario in alcuni punti, è anche un modello molto facile da implementare quando non è necessario. Come accenni qui, e come ha sottolineato Fernandes, probabilmente non ne hai bisogno. In effetti, l'uso di un pattern singleton è un buon segno di possibili (probabilmente) odori di codice. Usarlo per una classe di servizio è più che probabile un odore di codice. Sembra che tu abbia bisogno di DI, non di singleton. Alcune persone li usano in questo modo. Soprattutto per codice piccolo (non importante) o POC. Ma come ho detto, ci sono alcuni usi efficaci. Non trovare un modo semplice per fare qualcosa e fallo.
Suamere

4

Sono completamente d'accordo con @Peter Rasmussen.

I design pattern forniscono una soluzione generale ai problemi di progettazione che si verificano comunemente.

Vorrei che seguissi l'approccio di seguito.

  1. Comprendi l'intento di ogni modello
  2. Comprendere l'elenco di controllo o il caso d'uso di ogni modello
  3. Pensa alla soluzione al tuo problema e controlla se la tua soluzione rientra nella lista di controllo di uno schema particolare
  4. In caso contrario, ignora semplicemente i modelli di progettazione e scrivi la tua soluzione.

Link utili:

creazione di sorgenti : spiega in modo bello l' intento , la struttura e l' elenco di controllo in più linguaggi, inclusi C ++ e Java

wikipedia : spiega la struttura, il diagramma UML e gli esempi di lavoro in più linguaggi, inclusi C # e Java.

L'elenco di controllo e le regole pratiche in ogni modello di progettazione di sourcemakding fornisce l'alram bell che stai cercando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.