Design Pattern in JAVA

DESIGN PATTERN IN JAVA

In ingegneria del software il termine Design Pattern è un concetto che può essere definito “una soluzione progettuale generale ad un problema ricorrente”. Si tratta di un modello logico da applicare per la risoluzione di un problema che può presentarsi in diverse situazioni durante le fasi di progettazione e sviluppo del software, ancor prima della definizione dell’algoritmo risolutivo della parte computazionale.

I design pattern orientati agli oggetti tipicamente mostrano relazioni ed interazioni tra classi o oggetti, senza specificare le classi applicative finali coinvolte, risiedendo quindi nel dominio dei moduli e delle interconnessioni. Ad un livello più alto sono invece i pattern architetturali che hanno un ambito ben più ampio, descrivendo un pattern complessivo adottato dall’intero sistema, la cui implementazione logica dà vita ad un framework.

design pattern

I design pattern possono essere classificati con diverse modalità, le più comuni dei quali sono quelle che evidenziano il tipo di problema che si cerca di risolvere. Il tipo di problema può essere legato ad uno specifico dominio progettuale (telecomunicazioni, reti, software) oppure, più comunemente, al problema progettuale in senso più ampio (nell’ingegneria del software, ad esempio, si può parlare di creazione, comportamento, navigazione di oggetti o strutture dati).

La nascita del “movimento” dei pattern in informatica si deve al celebre libro Design Patterns: Elementi per il riuso di software ad oggetti di Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides (1995).

Grazie al successo di quest’opera, i suoi quattro autori divennero nomi talmente citati che la comunità scientifica iniziò, per brevità, a identificarli collettivamente con un nomignolo: la “banda dei quattro” (Gang of Four o Gof).

Nel loro libro la “banda dei quattro” identificò 23 tipi di design pattern, suddivisi in tre categorie: strutturali, creazionali e comportamentali.

 

DESIGN PATTERN CREAZIONALI

I pattern creazionali astraggono il processo di istanziazione e consentono di rendere il sistema indipendente da come gli oggetti sono creati, rappresentati e delle relazioni di composizione tra essi. Questi tipi di pattern incapsulano la conoscenza relativa alle classi concrete utilizzate dal sistema, nascondendo come le istanze delle classi sono create e assemblate.

 

DESIGN PATTERN STRUTTURALI

I pattern strutturali sono relativi a come classi e oggetti sono composti per formare strutture più grandi. I design pattern strutturali basati su oggetti mostrano le modalità di composizione degli oggetti per realizzare nuove funzionalità. Danno flessibilità alla composizione che viene modificata a run-time, cosa impossibile con la composizione statica (con classi).

 

DESIGN PATTERN COMPORTAMENTALI

I pattern comportamentali hanno il compito di mettere in relazione gli algoritmi e l’assegnamento di responsabilità tra gli oggetti descrivendo non solo i partecipanti (oggetti o classi) ma anche gli schemi di comunicazione da adoperare.

Questi tipi di pattern descrivono flussi di controllo complessi altrimenti difficili da descrivere a run-time, spostando l’attenzione dal flusso di controllo e permettono di concentrarsi su come gli oggetti sono interconnessi.

 

INDICE

Di seguito troverai la lista dei design pattern da noi implementati, per ogni pattern è prevista una descrizione specifica sulle funzionalità, dei pro e dei contro, un diagramma UML e un’ implementazione in JAVA 8. Se invece stai cercando solo i sorgenti, puoi trovarli in questo repository.

 

PATTERN CREAZIONALI

PATTERN STRUTTURALI

PATTERN COMPORTAMENTALI