Modelli di design per principianti
Se hai già scritto programmi per prodotti o applicazioni software, grandi/piccole, è molto probabile che tu abbia utilizzato molti Design Pattern… anche se è possibile che non siano uno dei Design Pattern più utilizzati/standard.
Ma sì, c’è un’ovvia differenza tra l’implementazione di un design pattern e l'”utilizzo” di un design pattern… in ogni caso, la persona che lavora con i design pattern lo capisce o lo capirà facilmente.
Il punto è che i design pattern non sono nuovi per i programmatori.
In questo articolo di seguito, sto cercando di spiegare i modelli di progettazione, nelle sue basi, e studieremo i dettagli di vari modelli, esempi, ecc. In un altro articolo.
Che cos’è un modello di progettazione?
Iniziare…
Penso che il modo migliore per iniziare a comprendere i modelli di progettazione sia comprendere i modelli non tecnici che seguiamo consapevolmente o inconsapevolmente nella nostra vita quotidiana.
Ad esempio, prendiamo molti CV inviati per un’offerta di lavoro. Il curriculum di tutti non ha lo stesso aspetto… anche se tutti tendono a fare la stessa cosa, ovvero dire a un lettore in cosa sono abili o come può essere adatto per il lavoro.
La maggior parte di coloro che inviano curriculum ai lavori, sa che devono inviare un curriculum con un particolare insieme di informazioni in un documento Word formattato.
Questo… è uno schema, secondo cui tutti inviano un curriculum con un particolare insieme di informazioni espresse in esso.
Se hai voglia… chiamalo Modelli invece di Schemi. Modelli di progettazione.
Ci sono molte di queste cose nella vita reale che sono schemi. Ad alcune persone piacciono gli esempi seguenti:
Tutti gli chef di tutto il mondo cucinano la pizza o le patatine fritte allo stesso modo. Anche se possono completarlo / aromatizzarlo in modo diverso. Questo è uno schema.
Il design di ogni auto segue un modello di progettazione di base, quattro ruote, volante, il sistema di trasmissione principale come acceleratore-frizione, ecc.
Tutte le cose ripetutamente costruite/prodotte, devono inevitabilmente seguire uno schema nel suo design… che si tratti di automobili, pizze, bancomat, qualunque cosa… persino lo spazzolino da denti.
Progetti che sono quasi diventati un modo standard per codificare alcune logiche/meccanismi/tecniche nel software, quindi sono diventati noti come – e quindi – studiati come Software Design Patterns.
Perché è importante un modello di progettazione?
Fondamentalmente per due motivi:
- Per attenersi a uno standard
- Per fissare lo sviluppo
Spiegherò in dettaglio.
In primo luogo, vediamo perché è interessante attenersi a uno schema standard.
Prendiamo l’elenco degli esempi di CV di cui abbiamo discusso in precedenza.
Potrebbero esserci uno o due candidati che inviano le loro domande di lavoro tramite testo e-mail senza formattazione corretta, senza allegati alla loro e-mail, ecc., .. questi uno o due candidati non seguono lo schema.. e NON è probabile che finiscano con il lavoro…. perché? Perché stanno deviando da uno schema ben consolidato, che potrebbe non piacere alle persone che selezionano i curriculum per il lavoro.
Non c’è nessuno che devia dallo schema e diventa “cool”? Non è innovazione?
Sì, ci sono momenti in cui un curriculum presentato in modo molto diverso ottiene il lavoro perché è diverso dagli altri. Di solito ho sentito parlare di web designer che hanno ottenuto lavori importanti perché hanno compilato e presentato un film su CD del loro lavoro, o hanno realizzato un personaggio animato che spiega il loro lavoro, l’hanno pubblicato sul loro blog e cose del genere.
Ma.. questa è sperimentazione (L’innovazione viene da esperimenti riusciti).
Molto spesso nello sviluppo del software, non puoi permetterti di sperimentare, a causa della pressione della tempistica, delle aspettative, ecc., ma sì, a volte, alcuni progetti interessanti consentono qualche sperimentazione.
Nel software, non possiamo fare cose di base come un deposito bancario… in 101 modi… ci saranno solo alcuni modi per elaborare un deposito bancario… quindi ha senso seguire un modello stabilito e testato.
Inoltre, la maggior parte dei modelli di design ha variazioni… alcune delle variazioni sono così popolari che le variazioni saranno anche un nuovo tipo standard del modello.
Al giorno d’oggi ci si aspetta che i progetti software (almeno implicitamente) seguano un design già stabilito di un prodotto/software simile sul mercato.
È qui che attenersi a uno stile standard di codifica o modello di progettazione aiuta lo sviluppo del software… accelerare lo sviluppo, eliminare il sovraccarico di preoccuparsi di una nuova implementazione non testata, ecc.,
Tempo di sviluppo del fissaggio
Seguire un modello di progettazione standard ha anche il vantaggio di comunicare facilmente attraverso l’albero / gerarchia di architetti del software, responsabili del modulo, responsabili del team, sviluppatori ecc., su “Come” qualcosa deve essere sviluppato, e non solo su “Cosa” deve essere sviluppato.
A volte aiuta anche i team di test, perché i tester saprebbero per esperienza che il codice che segue un particolare modello di progettazione potrebbe probabilmente essere testato in un modo specifico con una serie di strumenti di test in un certo periodo di tempo e tali progetti noti potrebbero non avere alcuni difetti o avere alcuni difetti “noti”.
L’utilizzo di Design Patterns non toglie un tocco personale?
No. In primo luogo perché non stiamo dicendo che segui uno schema di progettazione e non succede nient’altro. La maggior parte delle implementazioni del progetto condivide solo i requisiti di base con altri progetti e molto probabilmente presenterà delle deviazioni. Costruire queste deviazioni richiederà la flessione e l’allungamento dei modelli standard utilizzati in un’implementazione.
È come fare la pizza nel modo standard, quindi aromatizzarla / presentarla a diverse esigenze, come una pizza a torta intera, o una torta tagliata, o altro.
Nel comprendere l’importanza dei modelli di progettazione, una cosa è moltoimportante :
I modelli di progettazione non sono alcuna tecnologia o framework che una particolare azienda o linguaggio di programmazione ci impone. Ciò significa che è come un concetto aperto… sei libero di prenderlo, usarlo, modificarlo in base alle tue esigenze e, soprattutto… sentirlo tuo.
Tutti i modelli di design standard o popolari, in realtà, sono estensibili piuttosto pesantemente… sono diventati popolari, in primo luogo, solo perché molte persone lo usano… e molte persone lo usano solo perché sono flessibili alle loro esigenze.
O come pensi che un modello di design standard si adatterebbe a un progetto nel New Jersey per un’azienda e anche a Bangalore per un’altra azienda e un diverso tipo di progetto.
Questo ci porta a ” La maggior parte dei modelli di progettazione sono generici “… nel senso che non vengono sempre utilizzati per creare lo stesso tipo di software. Potresti non sentire cose come “modello di progettazione del software bancario” o “modello di progettazione del software di social networking” usate nelle discussioni comuni… ma solo “modelli di progettazione”.
Chi dovrebbe preoccuparsi dei modelli di progettazione?
- Proprio come un buon architetto edile accresce le sue capacità di progettazione di edifici, studiando l’architettura e il design di numerosi edifici e forme nel corso della sua vita, un architetto del software dovrebbe studiare e visualizzare come vengono progettati o progettati diversi sistemi software / tecnologici in tutto il mondo architettato.
- E proprio come i lavoratori edili di un edificio dovrebbero essere consapevoli dei diversi modi di implementare un progetto edilizio, sia per esperienza personale che per comprensione dall’architetto dell’edificio.
Gli sviluppatori/programmatori di software dovrebbero comprendere i modelli di progettazione del software di base e il loro codice di implementazione … da soli o dall’architetto del software che istruisce il team a svilupparlo seguendo un particolare modello.
Modelli di codice di base
Nelle righe di apertura di questo articolo, ho detto che qualsiasi programmatore avrebbe utilizzato i modelli di progettazione. Ecco alcuni esempi molto basilari di codice che segue uno schema.
-
Di seguito è riportato un modello di progettazione del filtro di intercettazione di base .
-
Nascondi Copia codice
-
switch (condition){ case Value1: case Value2: default: }
-
Trigger di eventi, gestori di eventi … rientrano nel modello di progettazione Soggetto-Osservatore di base. Discuteremo gli standard di ogni modello, variazioni popolari, con esempi … presto.
-
Se hai usato qualche tipo di raccolta, come Arraylist in C#, e hai ripetuto l’array, allora hai usato un modello di progettazione Iterator di base.
-
Il codice seguente è un esempio di un modello base di gestione delle eccezioni/ catena di responsabilità.
-
Nascondi Copia codice
-
try{ }catch(Exception ex){ } finally{ }
Diverse aree di modelli di progettazione
Ci sono diverse terminologie nel software diverse dai Design Patterns… alcune spesso correlate ai Design pattern di cui abbiamo discusso finora… e alcune del tutto estranee.
Ciò che abbiamo finora discusso in precedenza è talvolta chiamato ” Implementation Design Patterns “.
Ce ne sono altri, come Architecture Patterns, Framework Patterns, Language Patterns (per lo più chiamati Language Constructs).
Sono modelli posti a diversi livelli … come i modelli linguistici sono modelli implementati come parte di linguaggi di programmazione come C # / Java, come caratteristiche / costrutti del linguaggio … alcuni di essi li abbiamo già visti.
Tutti gli esempi precedenti di soggetto-osservatore, filtro di intercettazione, ecc., sono assorbiti come costrutti linguistici in tutti i popolari linguaggi di programmazione di alto livello che sono venuti dopo C.
I modelli di architettura sono quei modelli standard di architettura software, comunemente riferiti a diversi metodi di posizionamento o collegamento di moduli o livelli o livelli, che costituiscono l’applicazione completa.
Questo è del tutto estraneo ai modelli di progettazione nel senso di codifica / programmazione che … ma condividono le stesse risposte a Perché / Cosa è discusso in questo articolo.
Anche i framework pattern non sono correlati alla nostra discussione sui design pattern. Quando framework come .NET implementano mezzi speciali per la registrazione degli errori o la traccia dell’esecuzione del codice instradano facilmente attraverso i metodi o gli oggetti incorporati del framework, tali meccanismi vengono definiti modelli Framework.
Alcuni esempi in .NET Framework includono la funzionalità stackTrace, la funzionalità dell’attributo di classe con [] parentesi quadre sopra le definizioni di classe/metodo e così via. Quando si utilizzano tali funzionalità, si codifica con i modelli incorporati del Framework.
Spero che questo articolo aiuti a fornire una panoramica dei modelli di progettazione e delle relative terminologie.
Finora, abbiamo discusso solo di cosa sono gli standard e quanto sono importanti… ma non abbiamo discusso di quali siano gli stessi modelli standard.
Licenza
Questo articolo, insieme a qualsiasi codice sorgente e file associati, è concesso in licenza con The Code Project Open License (CPOL).